1. 程式人生 > >爬蟲總結8

爬蟲總結8

1. 非同步和非阻塞的區別

非同步是過程,非阻塞強調的是狀態

2. pymongo模組

from pymongo import MongoClient
# client = MongoClient(host=, port=)
uri = 'mongodb://賬號:密碼@127.0.0.1'
client = MongoClient(uri, port=27017) # 連線物件
# col = client['資料庫名']['集合名']'
col = client.資料庫名.集合名

col.insert({一條文件}/[{}, {}, ...])
col.find_one({條件})
rets = col.find({條件}) # 返回的是隻能遍歷一次的cursor遊標物件
col.delete_one({條件})
col.delete_many({條件})
col.update({條件},
		   {'$set':{指定更新的kv}},
		   multi=False/True, # 預設False表示只更新一條
		   upsert=False/True) # 預設False,True表示沒有就插入,存在就更新

3. scrapy簡單使用

建立專案 scrapy startproject 專案名
在專案路徑下建立爬蟲 scrapy genspider 爬蟲名 爬取範圍的域名
在專案路徑下執行爬蟲 scrapy crawl 爬蟲名

4. spider.py爬蟲模組

class Spider(scrapy.Spider):
	name = 爬蟲名
	allowed_domains = ['爬取範圍的域名', '可以是多個']
	start_urls = ['起始的url', '可以是多個']
	# scrapy.Spider類必須有名為parse的解析函式
	def parse(self, response):
		# 專門解析起始url對應的response
		yield item # {} BaseItem request None

5. scrapy提取的方法

response.xpath(xpath_str) # 返回由selector物件構成的類list
response.xpath(xpath_str).extract() # 返回包含字串的列表
response.xpath(xpath_str).extract_first() # 返回列表中第一個字串

6. response響應物件的常用屬性

response.url
response.request.url
response.headers
response.request.headers
response.status
response.body # 響應內容 bytes

7. pipelines.py管道需要在settings.py中開啟設定

8. 在settings.py中ROBOTSTXT_OBAY改為False表示忽略robots協議

9. scrapy框架的352陣容

三個內建資料物件
	request: url headers method post_data
	response: url headers status body
	item: {}/BaseItem
五大模組
	scheduler排程器
	downloader下載器
	spider爬蟲
	pipeline管道
	engine引擎
兩個中介軟體:對request、response預處理
	spider_middlewares爬蟲中介軟體
	downloader_middlewares下載中介軟體

10. scrapy的工作流程

a. spider中把start_url構造成request
b. request--爬蟲中介軟體--引擎--排程器,把request放入請求佇列
c. 調取器從佇列中取出request--引擎--下載中介軟體--下載器,傳送請求,獲取response
d. response--下載中介軟體--引擎--爬蟲中介軟體--spider
e. spider對response提取,提取url,構造成request--重複b步驟
f. spider對response提取,提取item--引擎--管道