请大佬帮忙看看,代码为什么只能查看一页数据后就停止,也不报错的原因,谢谢!
请大佬帮忙看看,代码为什么只能查看一页数据后就停止,也不报错的原因,谢谢!import scrapyfrom 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})# 生成新的请求 不太清楚等等别人吧 后面的页面需要cookie,如果没有正确的cookie就会读取到js加载的内容,导致后面的页面爬取就什么都没有爬到。 icytxt 发表于 2024-11-17 12:31
后面的页面需要cookie,如果没有正确的cookie就会读取到js加载的内容,导致后面的页面爬取就什么都没有爬到 ...
好的,谢谢,那我在scrapy中添加上默认cookie试一试! 我添加了下一页的cookie,可以获取下一页的,但第三页的cookie又不一样了,有没有什么方法自动获取下一页的cookie啊?谢谢!
我找到方法了,谢谢! xixi0714 发表于 2024-11-17 21:40
我找到方法了,谢谢!
能否分享一下,我也想学习一下 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]