加入爬蟲群第三周,這周的作業是:
008 - 爬蟲處理流程及網頁解析
009 - 使用XPath解析網頁
010 - 使用BeautifulSoup和XPath抓取結構化數據
基本上就是用XPath和BeautifulSoup爬取數據。向右老師肯定不是想我們照著做一遍就好,但他肯定沒想到有人連照著做一遍也有難度。
遇到的坑1是安裝幾個包,requests和lxml,這兩個包是爬蟲必須的,所以繞也繞不過去。簡而言之,有至少三種安裝方式
確定Python有裝pip,pip是管理包的工具,然后運行:pip install requests。
把我的錯誤回溯,應該是以下步驟:
<blockquote>確認安裝python同時也有安裝pip.exe。我的是在python/Scirpts目錄下,如果沒有安裝要重新卸載再安裝python;
在計算機-高級設置處,變量環境的Path處加入D:/python/Scripts這個路徑,(具體路徑根據個人不同)
在cmd處進入到Scripts目錄下,然后運行pip install requests下載whl文件,然后安裝whl文件(這個只是百度到做法,但是沒有嘗試)
pip和requests包折騰了周二周三兩個晚上,正好也特別累,就隨便看看書和視頻,然后到了lmxl包,也是線程的問題死活下不來,周四試完,周五沒再試,周六繼續,還嘗試下lxml-3.7.2.tgz文件解壓,最后程工看不下去直接扔給了我一個lmxl.exe包,然后就突然解放了....
以上就是我這周的功課....
為了不辜負大神的幫助,爬起來補作業...
向右老師這周刷了好幾篇帖子,然后我就糊涂了,先看了009,做了一半發現其實還有008,但反正008和010也沒看懂,就還是繼續按照009做下去了
主要就是XPath的爬取方法。向右老師用了糗事百科做例子:
裝好requests和lxml包以后,按照向右老師的代碼,很快就爬出來了。
其實我比較不明白的是@id替換成@class="article block untagged mb15"這個做法,就算是大神講了以后也還是不明白,只感覺是一種語法...
(大神說可以從w3school看Xpath語法,不過那里好像沒有講這個)
然后我就想實踐的運用一下,爬煎蛋網的段子:(我平日里沒有這些愛好!)
學到招數一:如果代碼很長又無法輸入文字搜索,在google chrome中打開開發者工具,點擊左上角的小箭頭,就能找到鼠標指向的段落的代碼。
然后,用右鍵copy as Xpath看到代碼,發現煎蛋網的段子代碼很怪:
//*[@id="comment-3443278"]/div[1]/div/div[2]/p
作為沒有其他辦法的小白,我當然就簡單的加上@class="article block untagged mb15",當然也很直接的失敗了。
然后經過各種大神們的生拉硬拽,自己嘗試各種排列組合,后來發現以下方法可行(不一定是最正確的方法:)
import requests
from lxml import etree
html=requests.get('http://jandan.net/duan').text
selector = etree.HTML(html)
content = selector.xpath('//div[@class="row"]/div[2]/p/text()')
for each in content:
print (each)
或者這樣寫也可以:
content = selector.xpath('//div[@class="row"]//p/text()')
但是只能爬一條,可能還是要加循環遍歷才行。
看回上圖,重點還是要理解網頁結構。要一層一層的找,從最上的<div>定位。
前路漫漫啊,這周其實把SQL和beautifulsoup都略過了,下周再繼續補作業....
謝謝老師和各位大神指導。