当前位置:   article > 正文

初学scrapy爬虫的一些坑_scrapy爬取文本时的坑

scrapy爬取文本时的坑

1、如果有代码无误却爬取不了的状况,那么一个可能是网络不好,另一个可能就是服务器拒绝响应,这种的话一般可以配置一下请求头,伪装成浏览器的爬虫。

例如我们可以在setting.py中,添加以下代码:

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.74'

 如图所示:

2、最容易出错的地方就是爬虫类的编写。该文件也是最主要的

例如,以下是我爬取豆瓣书籍top250的一个项目文件bookspider.py

  1. import scrapy
  2. from doubanbook.items import DoubanbookItem
  3. class BookspiderSpider(scrapy.Spider):
  4. name = "bookspider"
  5. allowed_domains = ["book.douban.com"]
  6. start_urls = ["https://book.douban.com/top250"]
  7. def parse(self, response):
  8. div_selector = response.xpath("//div[@class='indent']/table")#已debug,长度为25
  9. print(len(div_selector))
  10. for one_selector in div_selector:
  11. #标题
  12. title = one_selector.xpath("tr[@class='item']/td/div[@class='pl2']/a/text()").extract()[0]
  13. #主要信息
  14. detail =one_selector.xpath("tr[@class='item']/td/p[@class='pl']/text()").extract()[0]
  15. #评分
  16. score = one_selector.xpath("tr[@class='item']/td/div[@class='star clearfix']/span[@class='rating_nums']/text()").extract()[0]
  17. #异常处理机制,如果有summaries可以爬,就爬;如果没有,就直接视为空格录入csv文件
  18. try:
  19. #总结
  20. summaries = one_selector.xpath("tr[@class='item']/td/p/span[@class='inq']/text()").extract()[0]
  21. if summaries:
  22. book = DoubanbookItem(title=title,detail=detail,score=score, summaries=summaries)
  23. yield book
  24. # print(summaries)
  25. except Exception :
  26. book = DoubanbookItem(title=title, detail=detail, score=score, summaries=" ")
  27. yield book
  28. #翻页(如果有的话)
  29. try:
  30. next_url = response.xpath("//div[@class='paginator']/span[@class='next']/a/@href").extract()[0]
  31. if next_url:
  32. yield scrapy.Request(url=next_url, callback=self.parse)
  33. except Exception as e:
  34. self.logger.error(f"An error occurred: {e}")

(1)首先就是response对象中xpath属性规则的编写,一定要一层层往里定位,不要跳层,哪怕写错一个符号,都可能无法爬取【地址都给错了,爬虫根本就找不到,你说怎么爬】

(2)还有一个很重要的,也是我在该项目遇到的问题。例如这250本书,有一些是没有写总结信息的,所以一旦爬到该本书,就会报错,爬虫就不再爬了。所以要加入异常处理机制

【try-except Exception】,当爬到某本书发现该书缺了某个信息的时候,就将该信息记为空进行储存,然后再继续爬下一本。通过异常处理机制,我也顺利爬取成功.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/887418
推荐阅读
相关标签
  

闽ICP备14008679号