class
douyuspideritem
(scrapy.item)
:name = scrapy.field(
)# 儲存照⽚的名字
imagesurls = scrapy.field(
)# 照⽚的 url 路徑
imagespath = scrapy.field(
)# 照⽚儲存在本地的路徑
import scrapy
:# 返回從 json⾥獲取 data 段資料集合
data = json.loads(response.text)
["data"
]# 如果 data⾥⾯沒有值,那麼就直接退出函式
#if not data:
# return
for each in data:
item = douyuspideritem(
)item[
"name"
]= each[
"nickname"
]item[
"imagesurls"
]= each[
"vertical_src"
]yield item
self.offset +=
20yield scrapy.request(self.url +
str(self.offset)
, callback =
self.parse)
item_pipelines =
# images 的存放位置,之後會在 pipelines.py⾥調⽤
images_store =
"/users/power/lesson_python/douyuspider/images"
# user-agent
user_agent =
'dyzb/2.290 (iphone; ios 9.3.4; scale/2.00)'
import scrapy
import os
from scrapy.pipelines.images import imagespipeline
from scrapy.utils.project import get_project_settings
class
imagespipeline
(imagespipeline)
:images_store = get_project_settings(
).get(
"images_store"
)def
get_media_requests
(self, item, info)
:image_url = item[
"imagesurls"
]yield scrapy.request(image_url)
defitem_completed
(self, results, item, info)
:# 固定寫法,獲取圖⽚路徑,同時判斷這個路徑是否正確,如果正確,就 放 到 image_path⾥,imagespipeline 原始碼剖析可⻅
#get_media_requests 的作⽤就是為每⼀個圖⽚鏈結⽣成⼀個 request 物件,這
個⽅法的輸出將作為 item_completed 的輸⼊中的 results,results 是⼀個元組,
每 個元組包括 (success, imageinfoo***ilure) 。如果 success=true ,
imageinfo or_failure 是⼀個字典,包括 url/path/checksum 三個 key。
在項⽬根⽬錄下新建 main.py⽂件,⽤於除錯
from scrapy import cmdline
cmdline.execute(
'scrapy crawl douyu'
.split(
))
執⾏程式
py2 main.py
python爬蟲實戰 貓眼電影案例
背景 抓包ajax非同步載入的網頁,載入資料的url需要通過抓包獲取。一般確認是否非同步載入,只需要右鍵開啟網頁源 如果原始碼文字內容與前端展示的結果不一致,則屬於非同步載入。這時需要按f12開啟開發者工具的network,重新重新整理網頁,就能看到真正的url。如下圖所示,開發者工具中紅色框的ur...
python爬蟲案例 Python爬蟲案例集合
在python2.x裡面有urllib和urllib2 在python3.x裡面就把urllib和urllib2合成乙個urllib urllib3是在python3.x了裡面新增的第三方擴充套件。import urllib.request 向指定的url位址傳送請求,並返回伺服器響應的類檔案物件 ...
實戰 python爬蟲經典小案例彙總
所有例項 github位址 開始最好模仿,不要自己寫,錯了找不到原因 應用 搶票,投票,報告分析,飲食地圖,輿情監控 儲存資料 的方法大概可以分為幾類 儲存文字 儲存二進位制檔案 包括 儲存到資料庫 1.首先是獲取目標頁面 2.解析獲取的網頁中的元素,唯一定位,取得自己想要的 借助各種庫工具,分析頁...