1.創建一個項目
我們來看看這個項目的結構:
2 創建一個爬取信息的spider
3 我們可以調試一下先
使用 scrapy shell +網址
然后view (response)
but
這種情況下,一般來說,就是要加一個頭信息,有些時候,為了保留登錄狀態,還需要獲得cookie的信息。
在這里我采用了browsercookie來自動獲取我的chrome 瀏覽器的cookie,并加上了headers再試一遍:
4 反反爬蟲
pip3 install browsercookie
出現200
然后view(response)跳出頁面
說明成功了‘
5 提取內容模塊
之后就是解析頁面了,解析頁面可以使用css xpath 或者BeautifulSoup 這里先上代碼,因為這個屬于獨立的一塊,那個用的好久用哪個。
比如像這樣提取一個標題(用xpath):
6 設置item
我這里展示一下提取文章名字和摘要
先在item.py中封裝
7 編寫spider
這里我只是想介紹個整理,先上spider 代碼啦
# -*- coding: utf-8 -*-
import scrapy
from ..items import SpiderProjectItem
class HoptopSpider(scrapy.Spider):
name = 'hoptop'
allowed_domains = ['www.lxweimin.com/u/9ea40b5f607a']
start_urls = ['http://www.lxweimin.com/u/9ea40b5f607a/']
def parse(self, response):
content = SpiderProjectItem()
titles = response.xpath('//*[@id]/div/a/text()').extract()
#for one in titles:
# content['title'] = one
# yield content
abstracts = response.xpath('//*[@id]/div/p/text()').extract()
#for unit in abstracts:
# content['abstract'] = unit
# yield content
n = len(titles)
i = 0
while i < n :
content['title'] = titles[i]
content['abstract'] = abstracts[i]
i = i + 1
yield content
我這里的代碼比較簡陋,只是初步提取信息,還不包括下滑翻頁,只是展示一下而已
測試一下
scrapy crawl hoptop -o result.csv
成功了,雖然有點簡陋
寫在后面:
首先要明白爬蟲用來干什么,一般來說,是用來批量獲取網絡上的信息資源,比如我想把hoptop的博客全部下載下來離線看,那么他寫了那么多的博客,我不可能一頁一頁地復制,所以我可以編寫爬蟲批量下載
有些時候不一定要用框架,但是框架可以幫你節約一點時間,也別是大型的項目的時候
這里只是很簡陋地展示了一下,后續可以加入python對文本的處理能力,來規則化地獲取信息。
4。如果要簡單地使用scrapy 我覺得步驟可以如下:
1.先用shell調試,看看結構和反爬蟲手段
2.然后記得在setting中加上瀏覽器的headers ,編寫middlewares 可以使用chrome的Cookies模擬登陸。
3.接下來定義item中需要保存的內容(注意是文本的)
4.然后編寫spider 解析函數