scrapy爬取迅雷電影天堂最新電影ed2k

2022-07-01 05:15:09 字數 3504 閱讀 6195

幾天沒用scrapy爬**了,正好最近在刷電影,就想著把自己常用的乙個電影分享**給爬取下來儲存到本地mongodb中

第一步仍然是建立scrapy專案與spider檔案

切換到工作目錄兩條命令依次輸入

開啟目標**(分類是2023年上映的電影),分析我們需要的資料

進入頁面是列表的形式就像豆瓣電影一樣,然後我們點進去具體頁面看看

分析完成之後就可以首先編寫 items.py檔案

import

scrapy

class

xunleidianyingitem(scrapy.item):

#define the fields for your item here like:

#name = scrapy.field()

name =scrapy.field()

information =scrapy.field()

content =scrapy.field()

downloadurl =scrapy.field()

pass

另外別忘了去settings.py中開啟 item_pipelines 選項

老樣子,為了方便測試我們的爬蟲,首先編寫乙個main.py的檔案方便ide呼叫

main.py:

import

scrapy.cmdline

scrapy.cmdline.execute(

'scrapy crawl xunleibt

'.split())

首先我們先測試直接向目標傳送請求是否可以得到響應

爬蟲檔案 xunleibt.py編寫如下:

#

-*- coding: utf-8 -*-

import

scrapy

class

xunleibtspider(scrapy.spider):

name = '

xunleibt

'allowed_domains = ['

']start_urls = ['

/']defparse(self, response):

print

(response.text)

pass

執行 main.py 看看會出現什麼

好的,發現直接返回正常的網頁也就是我們要的網頁,說明該**沒有反爬機制,這樣我們就更容易爬取了

然後通過xpath定位頁面元素,具體就不再贅述,之前的scarpy教程中都有 繼續編寫爬蟲檔案

#

-*- coding: utf-8 -*-

import

scrapy

#匯入編寫的 item

from xunleidianying.items import

xunleidianyingitem

class

xunleibtspider(scrapy.spider):

name = '

xunleibt

'allowed_domains = ['

www.xl720.com']

start_urls = ['

/']defparse(self, response):

url_list = response.xpath('

//h3//@href

').getall()

for url in

url_list:

yield scrapy.request(url,callback=self.detail_page)

nextpage_link = response.xpath('

//a[@class="nextpostslink"]/@href

').get()

ifnextpage_link:

yield scrapy.request(nextpage_link, callback=self.parse)

defdetail_page(self,response):

#切記item帶括號

bt_item =xunleidianyingitem()

bt_item[

'name

'] = response.xpath('

//h1/text()

').get()

bt_item[

'information

'] = ''.join(response.xpath('

//div[@id="info"]//text()

').getall())

bt_item[

'content

'] = response.xpath('

//div[@id="link-report"]/text()

').get()

bt_item[

'downloadurl

'] = response.xpath('

//div[@class="download-link"]/a/text() | //div[@class="download-link"]/a/@href

').getall()

yield bt_item

item爬取完成後該幹什麼?當然是入庫儲存了,編寫pipelines.py檔案進行入庫儲存

再次提醒別忘了去settings.py中開啟 item_pipelines 選項

pipelines.py檔案**如下:

import

pymongo

#連線本地資料庫

myclient = pymongo.mongoclient("

mongodb://localhost:27017/")

#資料庫名稱

mydb = myclient["

movie_bt"]

#資料表名稱

mysheet = mydb["

movie"]

class

xunleidianyingpipeline(object):

defprocess_item(self, item, spider):

data =dict(item)

mysheet.insert(data)

return item

再次執行main.py 等待執行完成後開啟資料庫查詢

資料儲存完成,這次我們一共匯入了380個資料,可以愉快的檢視電影了

Scrapy爬蟲爬取電影天堂

目標 建立專案 scrapy startproject 爬蟲專案檔案的名字 生成 crawlspider 命令 scrapy genspider t crawl 爬蟲名字 爬蟲網域名稱 終端執行 scrapy crawl 爬蟲的名字 python操作mysql資料庫操作 爬蟲檔案 coding ut...

爬取電影天堂

分析每頁的url,可以得到規律是 第t頁的url為 於是可以先分析第一頁,然後對頁數進迴圈,就可得到所有最新電影的詳細資訊。from lxml import etree headers defget movie url url resp requests.get url,headers header...

python xpath爬取電影天堂

import requests from lxml import html base domain url html gndy dyzz list 23 1.html headers defspider base url html gndy dyzz list 23 html movies for ...