本文共 3594 字,大约阅读时间需要 11 分钟。
转载请注明出处!!!
实验对象: 实验目的:通过使用scrapy框架采集“人民的名义”评价内容,进一步体会信息检索的过程。 实验过程:分析采集实体->确定采集方法->制定爬取规则->编写代码并调试->得到数据ps:由于最近豆瓣发布的 Api V2测试版 需要授权 走oauth2,但是现在不开放key申请,所以直接爬了网页。
---------------------------------欢迎纠错和提问!24小时在线不打烊!!---------------------当前页面中,评价相关的内容有很多,我们通过分析选取更具代表性的数据进行采集。
豆瓣提供了的链接。
IMDb只提供了5条英文评价
这里指向了全部评价,没有分类,不考虑
这里提供了分集短评,不具代表性,不考虑
这里提供了,考虑采集看过/热门的前50条
考虑采集最受欢迎的前50条
豆瓣提供了部分xml格式的影评
采集的内容很全面,参考该官方示例确定采集实体
start_urls:
内容:当前页内采集分页:【后页】跳转下一页
start_urls:
内容:完整评价在当前页面可以爬取可以看出,页面通过js控制改变class来控制内容的显示隐藏和ajax动态赋值。
div#comments div.comment-item div.comment p::text
div#comments div.comment-item div.comment h3 span.comment-info span.rating::attr(title)
div#comments div.comment-item div.comment h3 span.comment-info a::attr(href)
div#comments div.comment-item div.comment h3 span.comment-info span.comment-time::text
div#paginator a.next::attr(href)
新建工程douban
编写items.py
import scrapyclass DoubanItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() title = scrapy.Field() description = scrapy.Field() star = scrapy.Field() creator = scrapy.Field() pubDate = scrapy.Field()
编写my_short.py
import scrapyfrom douban.items import DoubanItemclass MyShortSpider(scrapy.Spider): name = "my_short" allowed_domains = ["douban.com"] start_urls = [ 'https://movie.douban.com/subject/26727273/comments?status=P', ] def parse(self, response): for comment in response.css('div#comments div.comment-item div.comment'): item = DoubanItem() item['description'] = comment.css('p::text').extract_first(), item['star'] = comment.css('h3 span.comment-info span.rating::attr(title)').extract_first(), item['creator'] = comment.css('h3 span.comment-info a::attr(href)').extract_first(), item['pubDate'] = comment.css('h3 span.comment-info span.comment-time::text').extract_first(), yield item next_page = response.css('div#paginator a.next::attr(href)') if next_page is not None: next_urls = response.urljoin(next_page.extract_first()) yield scrapy.Request(next_urls,callback = self.parse)
403爬取失败
可选方案:
登录创建自己的工程并获取key
在自己的服务器安装crawlera
找到settings.py文件
添加crawler代理
如果你的spider中保留了cookie,在header中添加
407 错误如下:
用自己的key登录shub
上传工程
运行之后还是407
说好的免费现在好像是收费了。。弃坑
在经历了403 503 111 400 等一系列错误码之后,又尝试了许多代理ip,终于爬到了数据。
然而没过多久就又挂了...
总算是可以爬到数据了,只要及时更换代理ip就没有问题。
修改后的settings.py代码 是否遵循robots.txt某一次爬到数据180条
部分xml数据展示
未完待续。
参考链接: