赞
踩
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
- import scrapy
- from doubanbook.items import DoubanbookItem
- class BookspiderSpider(scrapy.Spider):
- name = "bookspider"
- allowed_domains = ["book.douban.com"]
- start_urls = ["https://book.douban.com/top250"]
-
- def parse(self, response):
- div_selector = response.xpath("//div[@class='indent']/table")#已debug,长度为25
- print(len(div_selector))
- for one_selector in div_selector:
-
-
- #标题
- title = one_selector.xpath("tr[@class='item']/td/div[@class='pl2']/a/text()").extract()[0]
-
- #主要信息
- detail =one_selector.xpath("tr[@class='item']/td/p[@class='pl']/text()").extract()[0]
-
- #评分
- score = one_selector.xpath("tr[@class='item']/td/div[@class='star clearfix']/span[@class='rating_nums']/text()").extract()[0]
-
- #异常处理机制,如果有summaries可以爬,就爬;如果没有,就直接视为空格录入csv文件
- try:
- #总结
- summaries = one_selector.xpath("tr[@class='item']/td/p/span[@class='inq']/text()").extract()[0]
- if summaries:
- book = DoubanbookItem(title=title,detail=detail,score=score, summaries=summaries)
- yield book
- # print(summaries)
-
- except Exception :
- book = DoubanbookItem(title=title, detail=detail, score=score, summaries=" ")
- yield book
-
- #翻页(如果有的话)
- try:
- next_url = response.xpath("//div[@class='paginator']/span[@class='next']/a/@href").extract()[0]
- if next_url:
- yield scrapy.Request(url=next_url, callback=self.parse)
-
-
- except Exception as e:
- self.logger.error(f"An error occurred: {e}")
-
-
-
-
-
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
(1)首先就是response对象中xpath属性规则的编写,一定要一层层往里定位,不要跳层,哪怕写错一个符号,都可能无法爬取【地址都给错了,爬虫根本就找不到,你说怎么爬】
(2)还有一个很重要的,也是我在该项目遇到的问题。例如这250本书,有一些是没有写总结信息的,所以一旦爬到该本书,就会报错,爬虫就不再爬了。所以要加入异常处理机制
【try-except Exception】,当爬到某本书发现该书缺了某个信息的时候,就将该信息记为空进行储存,然后再继续爬下一本。通过异常处理机制,我也顺利爬取成功.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。