scrapy爬取优快云文章

本文详细介绍了一种高效爬取优快云博客文章列表的方法,通过构造GET请求并利用时间戳参数,成功实现了自动化获取指定类别的文章信息,包括文章链接等关键数据。
爬取思路

首先csdn的文章列表页都是需要刷新或者点击加载才会显示更多的内容,并且返回的是json数据
这里有两种爬取思路:

1 用构造get请求
2 用selenium 模拟驱动浏览器的js函数通过不断下拉进度条来加载页面(思路简单 但是不推荐)

下面介绍如何通过构造get请求来实现文章
    通过chrome的检查 找到请求的url
jsnon数据
下面是请求的url
https://www.youkuaiyun.com/api/articles?type=more&category=python&shown_offset=1565609637350789
主要看category和shown_offset,前者不必过多解释,是类别,后面的是时间戳
看爬取代码.
  这里我截取了核心代码

from fake_useragent import UserAgent

list=['java','python','sql','android','javascript','web','arch','db','game','mobile','ops','sec','cloud','fund']
ua=UserAgent()
header={
    'User-Agent':ua.random,
}
class CsdnSpider(scrapy.Spider):
    name = 'csdn'
    allowed_domains = ['youkuaiyun.com']
    def start_requests(self):
            for name in list:
                url_time=int(time.time()*1000000) #时间戳
                url='https://www.youkuaiyun.com/api/articles?type=more&category={0}&shown_offset={1}'.format(name,str(url_time))
                yield scrapy.Request(url=url,callback=self.parse,headers=header)
    def parse(self, response):
        item = csdnitem()
        datas=json.loads(response.text)['articles']
        for data in datas:
            item["link_url"] = data['url']

代码大致解释一下关键的地方
       我使用了fake_useragent库伪造请求头,测试过,只用请求头可以请求到数据,如果在加上其他的请求体有时候会出现报错,或者请求失败,具体原因不知,但是在postman中却又可以请求的到json数据,fiddler测试只要头一样可以拿到数据
    请求到json数据后使用json.load()方法加载,差不多就大功搞成了
下面是效果图
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值