您的位置:首页 > 新闻资讯 >文章内容
如何使用代理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爬取微信文章的具体流程以及重点代码部分,如果大家在进行爬取的时候遇到问题可以反馈给我们,一起探讨。


相关文章内容简介
推荐阅读
  • 18 2019-09
    代理IP爬虫资讯:Python 2将停止更新

    对于常用代理IP来进行爬虫的工作者来说,Python 2实在是太熟悉不过了。但是你知道这款编程语言即将要停止更新、维护了吗?官方的不再运营又会不会对使用带来什么影响?下面,机灵代理为大家

  • 04 2019-04
    代理IP检测,有效性多少可以直接使用?

    IP检测的方法有哪些?由于IP会失效,最好在使用之前要先进行IP的检测,如果没有用了,也就没有必要再使用来访问,不然还白浪费时间。

  • 07 2020-12
    选择靠谱代理ip的方法

    网络中可以使用代理服务器的次数很多,对于经常接触网络的人来说应该并不陌生。

  • 13 2019-06
    想大量发帖如何突破IP限制

    想大量发帖如何突破IP限制?很多平台为了用户体验,以及自身的利益,很多都是有限制的,例如IP限制,这是比较常见的。

  • 11 2019-07
    要用最新代理服务器找谁好?

    要用最新代理服务器找谁好?很多网友都使用过代理的,代理,通俗一点来说就是代为处理的意思。那么代理服务器是指什么呢?下面小编来为大家延伸一下最新代理服务器的原理和用途。

  • 18 2019-10
    IP供应商质量差异的原因

    市面上代理IP服务商那么多,为什么总是看到网上很多关于代理IP的差评。都是主要围绕着IP质量来吐槽,不同的代理服务商所提供的IP,质量是不一样的。下面我们一起来了解一下这个话题。

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

大客户经理微信

微信公众号

微信公众号

回到顶部