heeler 发表于 2021-9-5 21:04

scrapy新人求教

这是我的scrapy代码:链接:https://pan.baidu.com/s/1UfKrtqxm6jCrFTwsAdPZNw
提取码:0n25
错误:生成的book.csv没有任何内容
怀疑:
````

from scrapy_book.items import ScrapyBookItem
    def parse_detail_page(self,response):
      book=ScrapyBookItem()
      book['name']=response.xpath('//div[@class="col-sm-6product_main"]/h1/text()').get()
      book['price']=response.xpath('//div[@class="col-sm-6product_main"]/p/text()').get()
      book['stars']=response.xpath('//p/@class').get().split()[1]
      book['reviews']=response.xpath('//table[@class="tabletable-striped"]/tr/td/text()').get()
      yield book
````
这段代码不知道放在何处,求指导

翎封苍穹 发表于 2021-9-5 21:04

这段代码是导入了scrapy_book项目中的items.py文件内的ScrapyBookItem类,items文件是用来定义模板的。你这段代码应该是自定义了一个解析方法,如果要使用这个方法,那么需要使用meta进行传参,不过你这个应该是起始链接的解析方法,所以可以将这个方法下面的代码放到def parse(self, response)这个方法下面,不过我看了一下你的代码,说实话,没看懂,因为你这个代码用了链接提取,这个应该是使用crawlspider类创建的的,就是在创建爬虫文件的时候使用 scrapy genspider -t crawl name domains 这个命令格式创建的,但是里面的格式就是你使用spider类创建的,也就是scrapy genspider book books.toscrape.com 这个命令创建的,所以我也看不懂,就只知道你要爬取那个网站的书名等信息,而且你那xpath解析拿到那个网站上查找之后找不到结果。所以我就自己写了一个scrapy爬虫,希望对楼主有所帮助吧!还有就是,技术有限,只能把数据存储到Excel中,csv怎么存储数据还没有研究过{:1_893:}(reviews的数据没有找到,详情页也找了!)
链接:https://pan.baidu.com/s/1GryaTxoXpi7FOopnWBX49g
提取码:slxs
--来自百度网盘超级会员V5的分享

翎封苍穹 发表于 2021-9-6 02:13

scrapy框架保存数据的代码是写到pipelines.py中的,写完之后记得去settings.py将里面的ITEM_PIPELINES注释掉

subney 发表于 2021-9-6 07:31

运行命令是不是少了一个 -o 参数

heeler 发表于 2021-9-6 08:15

翎封苍穹 发表于 2021-9-5 21:04
这段代码是导入了scrapy_book项目中的items.py文件内的ScrapyBookItem类,items文件是用来定义模板的。你这 ...

感谢大佬,我昨晚第一次接触scrapy,跟着别人的pdf学的,结果上面的实战项目一个都没过。。。

glces 发表于 2021-9-6 10:04

我没有仔细看你的xpath表达式写的是否正确。就从代码逻辑上说吧!
1. 调试一下代码,下个断点就能看到你的url重复被过滤了。你这个代码我看着是一言难尽,为什么入口了以后再重新request这个入口url。这样url重复了不是被过滤了吗?如果硬要这样操作,必须在request的时候加上 dont_filter=True参数
2. 代码里的包
from scrapy_book.items import ScrapyBookItem
from scrapy.linkextractors import LinkExtractor
都没有导入,我不知道怎么能运行的
3. setting里的 ITEM_PIPELINES 都没有开, 也就是说管道并不会运行呀。怎么可能能保存数据呢!

兄弟,你这完全是面向复制粘贴编程啊。对着教程做下笔记, 然后debug一下代码,单步一下才能记住这些问题呀!
页: [1]
查看完整版本: scrapy新人求教