使用scrapy框架爬取数据,前面爬取正常,最后一直爬取最后一页的数据,爬虫不停止

发布于 2022-09-12 23:23:34 字数 2098 浏览 21 评论 0

使用的是pycharm,爬虫

mport scrapy
from zuowen.items import ZuowenItem
 
class ZuoweneSpider(scrapy.Spider):
    name = 'zuowene'
    allowed_domains = ['https://www.zuowen.com']
    start_urls = ['https://www.zuowen.com/xiaoxue/ernianji/']
 
    def parse(self, response):
        #写人作文网址获取
        xieren = response.xpath("//div[@class='tczw_c']/div[1]/div[1]/ul/li[1]/a/@href").extract_first()
        yield scrapy.Request(url=xieren,
                             callback=self.parse_url,
                             dont_filter=True)
 
    #处理网址
    def parse_url(self, response):
        tr_list = response.xpath("//div[@class='artlist_l']/div")[1:-1]
        for tr in tr_list:
            item = ZuowenItem()
            item["title"] = tr.xpath("./div[1]/a/text()").extract_first()
            item["url"] = tr.xpath("./div[2]/a/@href").extract_first()
            item["category"] = tr.xpath("//div[@class='artlist_l_t']/h1/a/text()").extract_first()
 
            yield scrapy.Request(
                item["url"],
                callback=self.parse_detail,
                meta={"item": item},
                dont_filter=True
            )
 
            #翻页
            next_ur1 = response.xpath("//div[@class='artpage']/a[text()='下一页']/@href").extract_first()
            if next_ur1 is not None:
                yield scrapy.Request(next_ur1,
                                     callback=self.parse_url,
                                     dont_filter=True
                                     )
 
 
    # 处理详情,抓取作文内容
    def parse_detail(self, response):
        item = response.meta["item"]
        item["content"] = response.xpath("//div[@class='con_content']//text()").extract()
        yield item

items

import scrapy
 
class ZuowenItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    #标题
    title=scrapy.Field()
    #网址
    url=scrapy.Field()
    #作文内容
    content=scrapy.Field()
    #分类
    category=scrapy.Field()

剩下没有设置

已经试过将dont_filter=True改为Flase,但玩之后连内容都没有了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文