乙個臨時scrapy任務,可以實現基本的資料爬蟲,根據需要自行增添爬取網頁內容的模版,有空再完善pipline等更高階的功能。
源**和爬房價的**上傳:
目錄
乙個例子
建立專案
分析目標網頁
實現spider
執行和資料儲存
例子分析
爬取網頁50頁,每頁20本書,共1000本書的**和名字,了解scrapy爬蟲編寫的一般步驟。
開啟終端,在目標資料夾下執行:
scrapy startproject example
自動建立工程文件,檔案結構如下(tree example樹形檢視):
example
├── example
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── __pycache__
│ ├── settings.py
│ └── spiders
│ ├── __init__.py
│ └── __pycache__
└── scrapy.cfg
下面說明部分可以改的檔案:
items.py : 用於自定義資料類,封裝爬取的資料
pipelines.py:管道設定,與item連用
settings.py:設定檔案
spiders : 該資料夾下後面需要手動建立乙個spider爬蟲程式主體
chorm瀏覽器為例,進入網頁在想要審查元素的地方右鍵滑鼠,選擇檢查,即可定位到html的指定位置。從而獲得網頁和**的對應關係。如下圖,找到第二本書的名字:
分析完頁面後,接下來編寫爬蟲。在scrapy中編寫乙個爬蟲,即實現乙個scrapy.spider的子類。實現爬蟲的python檔案應位於exmaple/spiders目錄下,在該目錄下建立新檔案book_spider.py。然後,在book_spider.py中實現爬蟲booksspider,**如下:
# -*- coding: utf-8 -*-
import scrapy
class booksspider(scrapy.spider):
name = "books" # 每乙個爬蟲的唯一標識
start_urls = [''] # 定義爬蟲爬取的起始點,起始點可以是多個,這裡只有乙個
def parse(self, response):
# 提取資料
# 每一本書的資訊在中,使用css()方法找到所有這樣的article元素,並依次迭代
# 語法也可選擇xpath
for book in response.css('article.product_pod'):
# 書名資訊在article > h3 > a 元素的title屬性裡
# 例如: a light in the ..
name = book.xpath('./h3/a/@title').extract_first()
# 書價資訊在 的text中。
# 例如: £51.77
price = book.css('p.price_color::text').extract_first()
yield
# 提取翻頁鏈結
# 例如: next
next_url = response.css('ul.pager li.next a::attr(href)').extract_first()
if next_url:
next_url = response.urljoin(next_url)
yield scrapy.request(next_url, callback=self.parse)
子類中有三個重要元素:
難點在解析和提取網頁內容,後面分析。
執行下面語句即可,其中books是自定義爬蟲的name屬性:
scrapy crawl books
如果需要輸出可以:
scrapy crawl books -o books.csv #還可以為json檔案
爬取結果:
模版同上,只用修改spider程式的部分,涉及兩個問題:
怎麼提取資料?怎麼提交next請求?
我理解的就是在頁面中通過遍歷尋找和**地點相關的特徵屬性,然後提取其中的資料,方法有css()和xpath(),需要學習部分關於其的語法,以xpath()為主就行,兩者是一樣的。ps:還可以通過html**頁面待提取位置右鍵->copy->copy xpath進行參考
xpath的語法及例子參考如下:
這個網頁也寫的比較清楚,有空要在學習可以看一下:
Python爬蟲 scrapy輔助功能實用函式
scrapy輔助功能實用函式 get response 獲得scrapy.htmlresponse物件,在不新建scrapy專案工程的情況下,使用scrapy的一些函式做測試 extract links 解析出所有符合條件的鏈結 以拉勾首頁為例,獲取拉勾首頁所有職位鏈結,進一步可以單獨解析這些鏈結,...
scrapy爬蟲框架(一) scrapy框架簡介
開啟命令列輸入如下命令 pip install scrapy安裝完成後,python會自動將 scrapy命令新增到環境變數中去,這時我們就可以使用 scrapy命令來建立我們的第乙個 scrapy專案了。開啟命令列,輸入如下命令 scrapy startproject yourproject這裡的...
爬蟲框架scrapy入門(一)
這段時間一直在學爬蟲,做了一些簡單的專案,爬取資料的過程中,被封過ip,需要翻牆,為了大規模的資料採集,開始學習scrapy框架。參照的是靜覓大神的 python3網路爬蟲開發實戰 本次爬取的 是scrapy官網 建議使用anaconda的一鍵安裝,我的電腦上同時有anaconda和pycham,一...