摘要:本文內(nèi)容爬取豆瓣電影頁(yè)面內(nèi)容,字段包含排名,片名,導(dǎo)演,一句話描述有的為空,評(píng)分,評(píng)價(jià)人數(shù),上映時(shí)間,上映國(guó)家,類(lèi)別抓取數(shù)據(jù)存儲(chǔ)介紹爬蟲(chóng)框架教程一入門(mén)創(chuàng)建項(xiàng)目創(chuàng)建爬蟲(chóng)注意,爬蟲(chóng)名不能和項(xiàng)目名一樣應(yīng)對(duì)反爬策略的配置打開(kāi)文件,將修改為。
本文內(nèi)容
爬取豆瓣電影Top250頁(yè)面內(nèi)容,字段包含:
排名,片名,導(dǎo)演,一句話描述 有的為空,評(píng)分,評(píng)價(jià)人數(shù),上映時(shí)間,上映國(guó)家,類(lèi)別
抓取數(shù)據(jù)存儲(chǔ)
scrapy介紹Scrapy爬蟲(chóng)框架教程(一)-- Scrapy入門(mén)
創(chuàng)建項(xiàng)目scrapy startproject dbmovie創(chuàng)建爬蟲(chóng)
cd dbmoive scarpy genspider dbmovie_spider movie.douban.com/top250
注意,爬蟲(chóng)名不能和項(xiàng)目名一樣
應(yīng)對(duì)反爬策略的配置
打開(kāi)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", }運(yùn)行爬蟲(chóng)
scrapy crawl dbmovie_spider定義item
根據(jù)前面的分析,我們需要抓取一共十個(gè)字段的信息,現(xiàn)在在items.py文件中定義item
import scrapy class DoubanItem(scrapy.Item): # 排名 ranking = scrapy.Field() # 篇名 title = scrapy.Field() # 導(dǎo)演 director = scrapy.Field() # 一句話描述 有的為空 movie_desc = scrapy.Field() # 評(píng)分 rating_num = scrapy.Field() # 評(píng)價(jià)人數(shù) people_count = scrapy.Field() # 上映時(shí)間 online_date = scrapy.Field() # 上映國(guó)家 country = scrapy.Field() # 類(lèi)別 category = scrapy.Field()字段提取
這里需要用到xpath相關(guān)知識(shí),偷了個(gè)懶,直接用chrome插件獲取
Chrome瀏覽器獲取XPATH的方法----通過(guò)開(kāi)發(fā)者工具獲取
def parse(self, response): item = DoubanItem() movies = response.xpath("http://div[@class="item"]") for movie in movies: # 名次 item["ranking"] = movie.xpath("div[@class="pic"]/em/text()").extract()[0] # 片名 提取多個(gè)片名 titles = movie.xpath("div[@class="info"]/div[1]/a/span/text()").extract()[0] item["title"] = titles # 獲取導(dǎo)演信息 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(" ", "") # 制片國(guó)家 country = movie.xpath("div[2]/div[2]/p[1]/text()[2]").extract()[0].replace(" ", "").split("/")[1].replace("xa0", "") # 影片類(lèi)型 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的值是否為空,不進(jìn)行這一步有的電影信息并沒(méi)有會(huì)報(bào)錯(cuò)或數(shù)據(jù)不全 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 # 獲取下一頁(yè) next_url = response.xpath("http://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)存儲(chǔ)數(shù)據(jù),mysql
注意1064錯(cuò)誤,表中字段包含mysql關(guān)鍵字導(dǎo)致
Scrapy入門(mén)教程之寫(xiě)入數(shù)據(jù)庫(kù)
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簡(jiǎn)單應(yīng)對(duì)爬蟲(chóng)策略
Scrapy爬蟲(chóng)——突破反爬蟲(chóng)最全策略解析
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44910.html
摘要:注意爬豆爬一定要加入選項(xiàng),因?yàn)橹灰馕龅骄W(wǎng)站的有,就會(huì)自動(dòng)進(jìn)行過(guò)濾處理,把處理結(jié)果分配到相應(yīng)的類(lèi)別,但偏偏豆瓣里面的為空不需要分配,所以一定要關(guān)掉這個(gè)選項(xiàng)。 本課只針對(duì)python3環(huán)境下的Scrapy版本(即scrapy1.3+) 選取什么網(wǎng)站來(lái)爬取呢? 對(duì)于歪果人,上手練scrapy爬蟲(chóng)的網(wǎng)站一般是官方練手網(wǎng)站 http://quotes.toscrape.com 我們中國(guó)人,當(dāng)然...
摘要:這次我們爬取的內(nèi)容準(zhǔn)備步驟找到格式網(wǎng)頁(yè)中需要爬取的數(shù)據(jù)的例如我們需要爬取圖片的這里用的是不會(huì)用的同學(xué)請(qǐng)百度然后我們開(kāi)始建立工程打開(kāi)然后在你想要建立工程的目錄下面輸入就會(huì)自動(dòng)建立一個(gè)工程然后去根目錄建立一個(gè)去這個(gè)目錄里建立一個(gè)注意這里的主爬蟲(chóng) 這次我們爬取的內(nèi)容 showImg(https://segmentfault.com/img/bVSirX?w=1021&h=521); 準(zhǔn)備步驟...
摘要:前言新接觸爬蟲(chóng),經(jīng)過(guò)一段時(shí)間的實(shí)踐,寫(xiě)了幾個(gè)簡(jiǎn)單爬蟲(chóng),爬取豆瓣電影的爬蟲(chóng)例子網(wǎng)上有很多,但都很簡(jiǎn)單,大部分只介紹了請(qǐng)求頁(yè)面和解析部分,對(duì)于新手而言,我希望能夠有一個(gè)比較全面的實(shí)例。 0.前言 新接觸爬蟲(chóng),經(jīng)過(guò)一段時(shí)間的實(shí)踐,寫(xiě)了幾個(gè)簡(jiǎn)單爬蟲(chóng),爬取豆瓣電影的爬蟲(chóng)例子網(wǎng)上有很多,但都很簡(jiǎn)單,大部分只介紹了請(qǐng)求頁(yè)面和解析部分,對(duì)于新手而言,我希望能夠有一個(gè)比較全面的實(shí)例。所以找了很多實(shí)例和文...
摘要:介紹在博客爬蟲(chóng)爬取豆瓣電影圖片中我們利用的爬蟲(chóng)框架,將豆瓣電影圖片下載到自己電腦上。那么,在的爬蟲(chóng)的也可以下載圖片嗎答案當(dāng)然是肯定的在本次分享中,我們將利用的包和函數(shù)來(lái)實(shí)現(xiàn)圖片的下載。 介紹 ??在博客:Scrapy爬蟲(chóng)(4)爬取豆瓣電影Top250圖片中我們利用Python的爬蟲(chóng)框架Scrapy,將豆瓣電影Top250圖片下載到自己電腦上。那么,在Java的爬蟲(chóng)的也可以下載圖片嗎?答...
摘要:楚江數(shù)據(jù)是專(zhuān)業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)以供學(xué)習(xí),。本文來(lái)源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲(chóng)軟件定制開(kāi)發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類(lèi)信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專(zhuān)業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲(chóng)學(xué)習(xí)系列教程(來(lái)源于某博主:htt...
閱讀 3484·2021-11-19 09:40
閱讀 1502·2021-10-13 09:41
閱讀 2677·2021-09-29 09:35
閱讀 2723·2021-09-23 11:21
閱讀 1716·2021-09-09 11:56
閱讀 844·2019-08-30 15:53
閱讀 853·2019-08-30 15:52
閱讀 606·2019-08-30 12:47