step5: 编写spider爬取

改写parse函数

实现功能:

1.获取文章列表页中的文章url并交给scrapy下载后,交给解析函数进行具体字段的解析
2.获取下一页的url并交给scrapy进行下载,下载完成后交给parse

提取一页列表中的文章url

#解析列表页中所有文章的url,遍历出来
def parse(self, response):
    # 解析列表页中的所有url并交给scrapy下载后进行解析
    post_urls = response.css('#archive .floated-thumb .post-thumb a::attr(href)').extract()
    for post_url in post_urls:
        print(post_url)

 调试输出结果

 

如何让scrapy进行下载

引入request对象

from scrapy.http import Request

修改提取字段类类名为parse_detail,引入parse类进行域名拼接,yield下载

from urllib import parse

 

    def parse(self, response):

        #获取文章列表页中的文章url并交给解析函数进行具体字段的解析
        #获取下一页的url并交给scrapy进行下载,下载完成后交给parse
        post_urls = response.css('#archive .floated-thumb .post-thumb a::attr(href)').extract()
        for post_url in  post_urls:
            #yield Request(url=post_url,callback=self.parse_detail)
            yield Request(url=parse.urljoin(response.url, post_url),callback=self.parse_detail) #域名拼接 下载 下载完成后调用parse_detail解析字段

 

获取下一页并交给scrapy进行下载

        #提取下一页并交给scrapy下载
        next_url = response.css('.next.page-numbers::attr(href)').extract_first("")#空格去掉表示同时拥有两个属性
        if next_url:
            yield Request(url=parse.urljoin(response.url, next_url), callback=self.parse)  #继续调用parse解析出列表页中具体文章的url

 

调试前修改start_url为all-posts

调试结果

转载于:https://www.cnblogs.com/coolwinds/p/7450338.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值