python3爬虫用代理池爬虫搜狗微信文章
2018-12-09 19:38
477 查看
本文是通过搜狗微信,爬取有关python相关文章的标题,正文内容,公众号,发表日期等信息,把获取到的信息保存到mongodb中,因为需要用到代理池,所有需要先配置好代理池,代理词github地址:https://github.com/germey/proxypool ,安装方法参考里面的说明就行,此外需要安装好mongodb数据库和pymongo库,开发使用的是pycharm。
一,准备工作
首先新建一个项目名为weixinspider,在项目下面新建weinxin.py文件,然后打开搜狗微信页面,输入python,打开第一页,按f12查看页面结构:
可以看到请求的方式是get方法,请求的url是带参数的,把页面向下拉可以看到具体的参数信息,可以在爬虫中构造这些参数
构造的paramdata参数如下:
paramdata={ 'type': '2', 'query': 'python', 'ie': 'utf8', 's_from': 'input', '_sug_': 'y', '_sug_type_':'' }
设置了paramdata后,我们请求的初始url就为:
base_url = 'http://weixin.sogou.com/weixin?'
由于微信没有登录只能看前10页,所有需要先登录一下,把获取的cookie写到请求头中,为了反爬虫,可以同时把Host,User-Agent等信息加上,如下:
headers ={ 'Cookie': 'IPLOC=CN4201; SUID=2A429A753220910A000000005BEC2390; SUV=007A4CCC759A422A5BEC239185C1D647; pgv_pvi=6164456448; ld=5lllllllll2bEjnylllllVsdvW1lllllNBIj3kllll9lllllpZlll5@@@@@@@@@@; ABTEST=0|1543496174|v1; weixinIndexVisited=1; ppinf=5|1543583208|1544792808|dHJ1c3Q6MToxfGNsaWVudGlkOjQ6MjAxN3x1bmlxbmFtZToxODolRTUlQTQlOUMlRTYlQUQlOEN8Y3J0OjEwOjE1NDM1ODMyMDh8cmVmbmljazoxODolRTUlQTQlOUMlRTYlQUQlOEN8dXNlcmlkOjQ0Om85dDJsdUI4UHNrU25nSUZOSGh6RG95Qkl0WEFAd2VpeGluLnNvaHUuY29tfA; pprdig=MtSPg_Eje6Cgb3JZqqDWLRy3lxOkHyLx_RoxWzOuBaVPg9C9kx4MPPakrIncLKGQA4BydsB3k6UAnJdNz7L3soGJiqPzIwwx2Zgf-zq0GYC00hYz1L4cTewogFIss5Rkii5lnmY5CCfy8Gk-XM7lGXI4wPmdzjoS4fGdkDpfSu4; sgid=13-38142775-AVwBNegDtycQwSs9XVbmdNk; SUIR=D6845DB2C7C2BC6D69802225C8EB01AD; sct=6; SNUID=96753AD6A3A6DEE001DAB282A3179DC5; ppmdig=15440048300000001461f6ae4514423e04bac29b5ee8630b; JSESSIONID=aaaQUHCMr3KLgcywKP6Cw', 'Host': 'weixin.sogou.com', 'Referer': 'https://weixin.sogou.com/', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
配置好代理池,可以通过api获取到;
PROXY_POOL_URL = 'http://127.0.0.1:5000/get' def get_proxy(): try: response = requests.get(PROXY_POOL_URL) if response.status_code == 200: return response.text return None except ConnectionError: return None
使用代理
proxy = get_proxy() print('using proxy :{}'.format(proxy)) proxies = { 'http': 'http://' + proxy, 'https': 'https://' + proxy } data = urlencode(data) url = base_url + data try: request =requests.get(url=url,headers=headers,proxies=proxies if request.status_code==200: html=etree.HTML(request.content) article_urls=html.xpath('//div[@class="txt-box"]/h3/a/@href') else: print('Error') except: print('error')
相关文章推荐
- python爬虫实战--------搜狗微信文章(IP代理池和用户代理池设定----scrapy)
- python爬虫实战(三)--------搜狗微信文章(IP代理池和用户代理池设定----scrapy)
- python3之微信文章爬虫实例讲解
- Python爬虫实战(三) — 微信文章爬虫
- python爬虫之微信文章抓取
- python爬虫——爬取微信文章
- [Python爬虫] 之十五:Selenium +phantomjs根据微信公众号抓取微信文章
- requests;exceptions;UA;pq;re;time爬取搜狗微信文章(使用代理池,免费自造的代理池)
- 【学习】06 爬虫使用代理地址爬取搜狗微信文章
- Python爬虫:爬取微信文章
- nodejs爬虫抓取搜狗微信文章详解
- nodejs爬虫-通过抓取搜狗微信网站获取微信文章信息
- python爬虫使用代理池爬取拉勾网python招聘信息
- python 爬取微信文章
- 跟着鬼哥学爬虫-7-python微信-2-开始编写模版代码
- python scrapy爬取微信公众号文章的爬虫
- Python简单爬虫爬取自己博客园所有文章
- Python scrapy爬虫爬取伯乐在线全部文章,并写入数据库
- python爬虫,抓取新浪科技的文章(beautifulsoup+mysql)
- python实现博客文章爬虫示例