xixi0714 发表于 2024-11-17 10:16

请大佬帮忙看看,代码为什么只能查看一页数据后就停止,也不报错的原因,谢谢!

请大佬帮忙看看,代码为什么只能查看一页数据后就停止,也不报错的原因,谢谢!import scrapy
        from scrapy import Request
        from urllib.parse import urljoin


        class FenleiSpider(scrapy.Spider):
                        name = 'fenlei'
                        allowed_domains = ['17k.com']
                        start_urls=['http://17k.com/all']

   
                def parse(self, resp,**kwargs):
      
      td_list= resp.xpath('//table/tbody/tr[@class="bg0" or @class="bg1"]')
      for tr in td_list:
            category = tr.xpath('./td[@class="td2"]/a/text()').extract_first()
            name = tr.xpath('./td[@class="td3"]/span/a/text()').extract_first()
            newchapter = tr.xpath('./td[@class="td4"]/a/text()').extract_first()
            jianjie = tr.xpath('./div[@style="display:none;"]/div[@class="inner"]/dl/dd/ul/li/p/a/text()').extract_first()
            words = tr.xpath('./td[@class="td5"]/text()').extract_first()
            author = tr.xpath('./td[@class="td6"]/a/text()').extract_first()
            times = tr.xpath('./td[@class="td7"]/text()').extract_first()
            status = /em[@class="fc2"]/text()').extract() if text]
         
            
            yield{
                'category':category,
                'name':name,
                'newchapter':newchapter,
                'jianjie':jianjie,
                'words':words,
                'author':author,
                'times':times,
                'status':status
            }
            print(name)
      
      hrefs = resp.xpath('//div[@class="page"]/a/@href').extract()
      for href in hrefs:
            if href.startswith('javascript'):
                continue
            child_href = urljoin(resp.url, href)# 使用urljoin函数
            print(child_href)
            
            yield Request(child_href, callback=self.parse, meta={'Referer': resp.url})# 生成新的请求

PaulYangss 发表于 2024-11-17 12:26

不太清楚等等别人吧

icytxt 发表于 2024-11-17 12:31

后面的页面需要cookie,如果没有正确的cookie就会读取到js加载的内容,导致后面的页面爬取就什么都没有爬到。

xixi0714 发表于 2024-11-17 19:35

icytxt 发表于 2024-11-17 12:31
后面的页面需要cookie,如果没有正确的cookie就会读取到js加载的内容,导致后面的页面爬取就什么都没有爬到 ...

好的,谢谢,那我在scrapy中添加上默认cookie试一试!

xixi0714 发表于 2024-11-17 19:46

我添加了下一页的cookie,可以获取下一页的,但第三页的cookie又不一样了,有没有什么方法自动获取下一页的cookie啊?谢谢!

xixi0714 发表于 2024-11-17 21:40

我找到方法了,谢谢!

icytxt 发表于 2024-11-18 00:58

xixi0714 发表于 2024-11-17 21:40
我找到方法了,谢谢!

能否分享一下,我也想学习一下

xixi0714 发表于 2024-11-18 11:38

def start_requests(self):
#重写了scrapy的start_requests ,手动处理
s=''
dic={}
for item in s.split(';'):
            item = item.strip()
            k , v =item.split('=',1) #只切一次
            dic = v
      yield Request(self.start_urls,cookies=dic)
页: [1]
查看完整版本: 请大佬帮忙看看,代码为什么只能查看一页数据后就停止,也不报错的原因,谢谢!