您的位置:首页 > 移动开发 > 微信开发

使用pyquery爬取搜狗微信文章

2019-04-08 11:16 127 查看
版权声明:转载需注明来源 https://blog.csdn.net/weixin_44024393/article/details/89084309

缺点:还是没有使用代理,出现验证码就停止抓取了

import requests
from pyquery import PyQuery as pq
from fake_useragent import UserAgent
from urllib.parse import urlencode
import queue
import re

# 构建请求头
ua = UserAgent()
headers = {
'user-agent': ua.Chrome,
'cookie': '自己设置'
}

# 声明一个列表存储字典
data_list = []

def get_index(q):
url = q.get()
# 请求url
resp = requests.get(url, headers=headers)
# 将返回的数据转成pyquery格式
doc = pq(resp.content)
# 分析网页,抓取ul标签下的li标签,这里使用的是items
# 因为抓取到的是多个节点对象,所以需要使用items方法将其转成list
# 方可对其进行遍历
lis = doc('.news-list li').items()
# 遍历li标签,抓取所需的数据
for li in lis:
# 文章题目
title = li.find('h3').text()
# 作者
author = li.find('.s-p a').text()
# 摘要
content = li.find('p').text()
# 时间戳,爬到的数据document.write(timeConvert('1526012173'))
datetime = li.find('.s2 script').text()
# 使用正则匹配时间戳
datetime = re.findall(r'\d+', datetime)[0]

# 声明一个字典存储数据
data_dict = {}
data_dict['title'] = title
data_dict['author'] = author
data_dict['content'] = content
data_dict['datetime'] = datetime
data_list.append(data_dict)

def main():

# 声明一个队列存储url
q = queue.Queue()
for page in range(1, 10):
# 构建url参数
data = {
'query': 'python爬虫',
'type': '2',
'page': page
}
# 将url的参数进行编码后拼接到url
url = 'https://weixin.sogou.com/weixin?' + urlencode(data)
# 将url存入队列中
q.put(url)
# 当列表不为空,则继续爬取
while not q.empty():
get_index(q)

if __name__ == '__main__':

main()
print(data_list)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: