使用pyquery爬取搜狗微信文章

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

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值