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


相关文章内容简介
推荐阅读
  • 15 2019-11
    对代理IP的存在的误解

    代理IP这个工具虽然有着非常强大的功能,但是他也不是万能的,机灵代理发现大家在使用的时候,对代理IP存在某些误区,下面我们一起来整理一下。

  • 14 2020-05
    电脑ip地址被封的原因

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

  • 21 2019-11
    代理IP的网络协议

    你知道代理IP使用的是什么网络协议吗?代理IP有HTTPS代理、Socks代理、HTTP代理,这三种代理,今天我们就跟着机灵代理的脚步来好好认识一下是通过什么协议来进行工作的。

  • 21 2019-10
    代理IP实用 但不是万能

    代理IP能够用于工作跟生活中的一些活动,有的人认为既然我已经是付费购买了代理服务,那么自然就能够解决所有的问题。这里面存在着不少代理IP的错误认知,我们今天来逐个排查。

  • 23 2019-08
    追星族打榜投票 你需要用到代理IP

    为喜欢的偶像打榜投票这股风从韩国吹到来国内有一段时间了,各种大型的选秀节目诞生了一批批的人气偶像,追星族为了为自己爱豆营造人气,需要积极去打榜投票。机灵代理这种IP代理商就

  • 27 2019-09
    可用的代理服务器地址获取方式

    代理服务器用着用着断了,突然被墙了,这种情况确实让人心烦。但是也没有办法,毕竟如今的打压力度比较严厉,能怎么办呢?还不是只能继续找可用代理服务器跟代理IP。下面这个教程教大家

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

大客户经理微信

微信公众号

微信公众号

回到顶部