摘要:本文內容爬取豆瓣電影頁面內容,字段包含排名,片名,導演,一句話描述有的為空,評分,評價人數,上映時間,上映國家,類別抓取數據存儲介紹爬蟲框架教程一入門創建項目創建爬蟲注意,爬蟲名不能和項目名一樣應對反爬策略的配置打開文件,將修改為。
本文內容
爬取豆瓣電影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("http://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("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)存儲數據,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爬蟲——突破反爬蟲最全策略解析
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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...
閱讀 3480·2021-11-19 09:40
閱讀 1496·2021-10-13 09:41
閱讀 2671·2021-09-29 09:35
閱讀 2715·2021-09-23 11:21
閱讀 1703·2021-09-09 11:56
閱讀 836·2019-08-30 15:53
閱讀 848·2019-08-30 15:52
閱讀 604·2019-08-30 12:47