您的位置:首页 > 新闻资讯 >文章内容
如何使用代理IP抓取微信文章?
来源:互联网 作者:admin 时间:2019-09-25 10:08:34

  微信拥有非常庞大的用户量,微信平台让自媒体这个行业成为了一门专门的职业,公众号每天产生了海量的文章,如果我们想要爬取这些文章数据,那么应该怎么执行呢?代理IP的使用是必不可少的,下面我们看看具体操作。


  使用搜狗搜索爬取微信文章时由于官方有反爬虫措施,不更换代理容易被封,所以使用更换代理的方法爬取微信文章。


  步骤:


  (1)分析网页结构,拿到网页请求参数


  

如何使用代理IP抓取微信文章


  (2)构造请求参数,获取索引页内容:


  def get_index(keyword, page):

  data = {

  'query': keyword,

  'type': 2,

  'page': page

  }

  queries = urlencode(data)

  url = base_url + queries

  html = get_html(url)

  return html


  (3)主要讲下代理IP的实现方法,先设置本地IP为默认代理,定义获取代理池IP地址的函数,当爬取出现403错误的时候更改代理,在获取网页源代码的时候传入代理IP地址,若获取网页源代码失败再次调用 get_html() 方法,再次进行获取尝试。


  #初始化代理为本地IP

  proxy = None

  #定义获取代理函数

  def get_proxy():

  try:

  response = requests.get('PROXY_POOL_URL')

  if response.status_code == 200:

  return response.text

  return None

  except ConnectionError:

  return None

  #添加代理获取网页内容

  def get_html(url, count=1):

  print('Crawling', url)

  print('Trying Count', count)

  global proxy

  if count >= MAX_COUNT:

  print('Tried Too Many Counts')

  return None

  try:

  if proxy:

  proxies = {

  'http': 'http://' + proxy

  }

  response = requests.get(url, allow_redirects=False, headers=headers, proxies=proxies)

  else:

  response = requests.get(url, allow_redirects=False, headers=headers)

  if response.status_code == 200:

  return response.text

  if response.status_code == 302:

  # Need Proxy

  print('302')

  proxy = get_proxy()

  if proxy:

  print('Using Proxy', proxy)

  return get_html(url)

  else:

  print('Get Proxy Failed')

  return None

  except ConnectionError as e:

  print('Error Occurred', e.args)

  proxy = get_proxy()

  count += 1

  return get_html(url, count)


  (4)使用 pyquery 获取详情页详细微信文章信息(如:微信文章标题、内容、日期、公众号名称等):


  def parse_detail(html):

  try:

  doc = pq(html)

  title = doc('.rich_media_title').text()

  content = doc('.rich_media_content').text()

  date = doc('#post-date').text()

  nickname = doc('#js_profile_qrcode > div > strong').text()

  wechat = doc('#js_profile_qrcode > div > p:nth-child(3) > span').text()

  return {

  'title': title,

  'content': content,

  'date': date,

  'nickname': nickname,

  'wechat': wechat

  }

  except XMLSyntaxError:

  return None

  (5)存储到MongoDB,去重操作:

  def save_to_mongo(data):

  if db['articles'].update({'title': data['title']}, {'$set': data}, True):

  print('Saved to Mongo', data['title'])

  else:

  print('Saved to Mongo Failed', data['title'])


  以上就是用代理IP爬取微信文章的具体流程以及重点代码部分,如果大家在进行爬取的时候遇到问题可以反馈给我们,一起探讨。


相关文章内容简介
推荐阅读
  • 14 2020-05
    电脑ip地址被封的原因

    为什么我们的账号会被平台给封掉?有的时候发帖子、发消息频繁账号就被禁了,有的时候是挂机玩游戏,被平台发现了游戏账号也封了。引起封号的原因以及解决方法,机灵代理下面就来给大

  • 09 2020-11
    IP代理和VPS有何不同

    IP代理和VPS有何不同,首先我们简单介绍一下换IP地址的代理IP和VPS的概念。

  • 19 2019-06
    爬虫要使用多个ip代理怎么找

    爬虫要使用多个ip代理怎么找?爬虫由于需要抓取比较多的数据,这对于ip代理的需求比较大的,如果只是使用一个代理,这是不能满足需求的。既然需要多个ip代理,上哪里找好?

  • 26 2019-07
    代理IP失效快速处理方法

    代理IP失效快速处理方法!有些代理IP商家的质量不好,来是用着用着就时效,怎么解决呢?要不要换代理IP商呢?既然选对代理IP平台的重要性高,那么选择代理IP平台要擦亮眼睛,千万不要被

  • 25 2019-10
    个人用户获得免费代理IP方式

    对于爬虫学习者来说,练习是很有必要的,因为看了再好的教程跟理论,都比不上一次一次的反复操作,从实践中学习,能够快速提升。但是如果练习次次都需要购买代理IP服务,那么这费用确

  • 26 2019-02
    爬虫效率太慢,使用多进程效果怎么样?

    当我们想要提高爬虫的爬取效率时,可以使用多进程,多线程,协程等,那么使用哪种方法比较好呢?今天先跟小编来了解下关于多进程,进程创建方法,以及多进程的优缺点。

在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部