python爬蟲筆記-day3
正則使用的注意點
re.findall("a(.*?)b","str"),能夠返回括號中的內容,括號前後的內容起到定位和過濾的效果
原始字串r,待匹配字串中有反斜槓的時候,使用r能夠忽視反斜槓帶來的轉義的效果
點號預設情況匹配不到\n
\s能夠匹配空白字元,不僅僅包含空格,還有\t|\r\n
xpath學習重點
使用xpath helper或者是chrome中的copy xpath都是從element中提取的資料,但是爬蟲獲取的是url對應的響應,往往和elements不一樣
獲取文字
a/text() 獲取a下的文字
a//text() 獲取a下的所有標籤的文字
//a[text()='下一頁'] 選擇文字為下一頁三個字的a標籤
@符號
a/@href
//ul[@id="detail-list"]
//
在xpath最前面表示從當前html中任意位置開始選擇
li//a 表示的是li下任何一個標籤
lxml使用注意點
lxml能夠修正HTML程式碼,但是可能會改錯了
使用etree.tostring觀察修改之後的html的樣子,根據修改之後的html字串寫xpath
lxml 能夠接受bytes和str的字串
提取頁面資料的思路
先分組,渠道一個包含分組標籤的列表
遍歷,取其中每一組進行資料的提取,不會造成資料的對應錯亂
xpath的包含
//div[contains(@class,'i')]
實現爬蟲的套路
準備url
準備start_url
url地址規律不明顯,總數不確定
通過程式碼提取下一頁的url
xpath
尋找url地址,部分引數在當前的響應中(比如,當前頁碼數和總的頁碼數在當前的響應中)
準備url_list
頁碼總數明確
url地址規律明顯
傳送請求,獲取響應
新增隨機的User-Agent,反反爬蟲
新增隨機的代理ip,反反爬蟲
在對方判斷出我們是爬蟲之後,應該新增更多的headers欄位,包括cookie
cookie的處理可以使用session來解決
準備一堆能用的cookie,組成cookie池
如果不登入
準備剛開始能夠成功請求對方網站的cookie,即接收對方網站設定在response的cookie
下一次請求的時候,使用之前的列表中的cookie來請求
如果登入
準備多個賬號
使用程式獲取每個賬號的cookie
之後請求登入之後才能訪問的網站隨機的選擇cookie
提取資料
確定資料的位置
如果資料在當前的url地址中
提取的是列表頁的資料
直接請求列表頁的url地址,不用進入詳情頁
提取的是詳情頁的資料
確定url
傳送請求
提取資料
返回
如果資料不在當前的url地址中
在其他的響應中,尋找資料的位置
從network中從上往下找
使用chrome中的過濾條件,選擇出了js,css,img之外的按鈕
使用chrome的search all file,搜尋數字和英文
資料的提取
xpath,從html中提取整塊的資料,先分組,之後每一組再提取
re,提取max_time,price,html中的json字串
json
儲存
儲存在本地,text,json,csv
儲存在資料庫