摘要:本文内容爬取豆瓣电影页面内容,字段包含排名,片名,导演,一句话描述有的为空,评分,评价人数,上映时间,上映国家,类别抓取数据存储介绍爬虫框架教程一入门创建项目创建爬虫注意,爬虫名不能和项目名一样应对反爬策略的配置打开文件,将修改为。
本文内容
爬取豆瓣电影Top250页面内容,字段包含:
排名,片名,导演,一句话描述 有的为空,评分,评价人数,上映时间,上映国家,类别
抓取数据存储
scrapy介绍Scrapy爬虫框架教程(一)-- Scrapy入门
创建项目scrapy startproject dbmovie创建爬虫
cd dbmoive scarpy genspider dbmovie_spider movie.douban.com/top250
注意,爬虫名不能和项目名一样
应对反爬策略的配置
打开settings.py文件,将ROBOTSTXT_OBEY修改为False。
ROBOTSTXT_OBEY = False
修改User-Agent
DEFAULT_REQUEST_HEADERS = { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en", "Accept-Encoding" : "gzip, deflate, br", "Cache-Control" : "max-age=0", "Connection" : "keep-alive", "Host" : "movie.douban.com", "Upgrade-Insecure-Requests" : "1", "User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36", }运行爬虫
scrapy crawl dbmovie_spider定义item
根据前面的分析,我们需要抓取一共十个字段的信息,现在在items.py文件中定义item
import scrapy class DoubanItem(scrapy.Item): # 排名 ranking = scrapy.Field() # 篇名 title = scrapy.Field() # 导演 director = scrapy.Field() # 一句话描述 有的为空 movie_desc = scrapy.Field() # 评分 rating_num = scrapy.Field() # 评价人数 people_count = scrapy.Field() # 上映时间 online_date = scrapy.Field() # 上映国家 country = scrapy.Field() # 类别 category = scrapy.Field()字段提取
这里需要用到xpath相关知识,偷了个懒,直接用chrome插件获取
Chrome浏览器获取XPATH的方法----通过开发者工具获取
def parse(self, response): item = DoubanItem() movies = response.xpath("//div[@class="item"]") for movie in movies: # 名次 item["ranking"] = movie.xpath("div[@class="pic"]/em/text()").extract()[0] # 片名 提取多个片名 titles = movie.xpath("div[@class="info"]/div[1]/a/span/text()").extract()[0] item["title"] = titles # 获取导演信息 info_director = movie.xpath("div[2]/div[2]/p[1]/text()[1]").extract()[0].replace(" ", "").replace(" ", "").split("xa0")[0] item["director"] = info_director # 上映日期 online_date = movie.xpath("div[2]/div[2]/p[1]/text()[2]").extract()[0].replace(" ", "").replace("xa0", "").split("/")[0].replace(" ", "") # 制片国家 country = movie.xpath("div[2]/div[2]/p[1]/text()[2]").extract()[0].replace(" ", "").split("/")[1].replace("xa0", "") # 影片类型 category = movie.xpath("div[2]/div[2]/p[1]/text()[2]").extract()[0].replace(" ", "").split("/")[2].replace("xa0", "").replace(" ", "") item["online_date"] = online_date item["country"] = country item["category"] = category movie_desc = movie.xpath("div[@class="info"]/div[@class="bd"]/p[@class="quote"]/span/text()").extract() if len(movie_desc) != 0: # 判断info的值是否为空,不进行这一步有的电影信息并没有会报错或数据不全 item["movie_desc"] = movie_desc else: item["movie_desc"] = " " item["rating_num"] = movie.xpath("div[@class="info"]/div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()").extract()[0] item["people_count"] = movie.xpath("div[@class="info"]/div[@class="bd"]/div[@class="star"]/span[4]/text()").extract()[0] yield item # 获取下一页 next_url = response.xpath("//span[@class="next"]/a/@href").extract() if next_url: next_url = "https://movie.douban.com/top250" + next_url[0] yield scrapy.Request(next_url, callback=self.parse, dont_filter=True)存储数据,mysql
注意1064错误,表中字段包含mysql关键字导致
Scrapy入门教程之写入数据库
import pymysql def dbHandle(): conn = pymysql.connect( host="localhost", user="root", passwd="pwd", db="dbmovie", charset="utf8", use_unicode=False ) return conn class DoubanPipeline(object): def process_item(self, item, spider): dbObject = dbHandle() cursor = dbObject.cursor() sql = "insert into db_info(ranking,title,director,movie_desc,rating_num,people_count,online_date,country,category) values(%s,%s,%s,%s,%s,%s,%s,%s,%s)" try: cursor.execute(sql, (item["ranking"], item["title"], item["director"], item["movie_desc"], item["rating_num"], item["people_count"], item["online_date"], item["country"], item["category"])) dbObject.commit() except Exception as e: print(e) dbObject.rollback() return item简单应对爬虫策略
Scrapy爬虫——突破反爬虫最全策略解析
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/44910.html
摘要:注意爬豆爬一定要加入选项,因为只要解析到网站的有,就会自动进行过滤处理,把处理结果分配到相应的类别,但偏偏豆瓣里面的为空不需要分配,所以一定要关掉这个选项。 本课只针对python3环境下的Scrapy版本(即scrapy1.3+) 选取什么网站来爬取呢? 对于歪果人,上手练scrapy爬虫的网站一般是官方练手网站 http://quotes.toscrape.com 我们中国人,当然...
摘要:这次我们爬取的内容准备步骤找到格式网页中需要爬取的数据的例如我们需要爬取图片的这里用的是不会用的同学请百度然后我们开始建立工程打开然后在你想要建立工程的目录下面输入就会自动建立一个工程然后去根目录建立一个去这个目录里建立一个注意这里的主爬虫 这次我们爬取的内容 showImg(https://segmentfault.com/img/bVSirX?w=1021&h=521); 准备步骤...
摘要:前言新接触爬虫,经过一段时间的实践,写了几个简单爬虫,爬取豆瓣电影的爬虫例子网上有很多,但都很简单,大部分只介绍了请求页面和解析部分,对于新手而言,我希望能够有一个比较全面的实例。 0.前言 新接触爬虫,经过一段时间的实践,写了几个简单爬虫,爬取豆瓣电影的爬虫例子网上有很多,但都很简单,大部分只介绍了请求页面和解析部分,对于新手而言,我希望能够有一个比较全面的实例。所以找了很多实例和文...
摘要:介绍在博客爬虫爬取豆瓣电影图片中我们利用的爬虫框架,将豆瓣电影图片下载到自己电脑上。那么,在的爬虫的也可以下载图片吗答案当然是肯定的在本次分享中,我们将利用的包和函数来实现图片的下载。 介绍 在博客:Scrapy爬虫(4)爬取豆瓣电影Top250图片中我们利用Python的爬虫框架Scrapy,将豆瓣电影Top250图片下载到自己电脑上。那么,在Java的爬虫的也可以下载图片吗?答...
摘要:楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,。本文来源知乎作者路人甲链接楚江数据提供网站数据采集和爬虫软件定制开发服务,服务范围涵盖社交网络电子商务分类信息学术研究等。 楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,http://www.chujiangdata.com。 第一:Python爬虫学习系列教程(来源于某博主:htt...
阅读 3475·2021-11-19 09:40
阅读 1491·2021-10-13 09:41
阅读 2654·2021-09-29 09:35
阅读 2709·2021-09-23 11:21
阅读 1692·2021-09-09 11:56
阅读 829·2019-08-30 15:53
阅读 843·2019-08-30 15:52
阅读 598·2019-08-30 12:47