本文目錄一覽:
- 1、用Python爬取網頁並用xpath解析,得到一個內容相同的集合,為什麼
- 2、「python爬蟲保姆級教學」urllib的使用以及頁面解析
- 3、python3怎麼抓取
- 4、怎樣用Python的BeautifulSoup修改頁面里的元素?
- 5、如何利用Python自動完成對網頁平台上可點擊的元素操作,用什麼模塊,具體函數有哪些,請大神指教
- 6、Python解析庫lxml與xpath用法總結
用Python爬取網頁並用xpath解析,得到一個內容相同的集合,為什麼
問題出在你每次得到的都是同一個list 每次取list[0] 當然永遠是重複的第一個元素。
問題出在這個//*[@id=”newsRegion”]/ul/li 取得的所有的li不是一個個別的li。返回的list 雖然有幾十個元素,但每一個用後面的xpath匹配都是可以得到相同的結果
「python爬蟲保姆級教學」urllib的使用以及頁面解析
使用urllib來獲取百度首頁的源碼
get請求參數,如果是中文,需要對中文進行編碼,如下面這樣,如果不編碼會報錯。
urlencode應用場景:多個參數的時候。如下
為什麼要學習handler?
為什麼需要代理?因為有的網站是禁止爬蟲的,如果用真實的ip去爬蟲,容易被封掉。
2.解析技術
1.安裝lxml庫
2.導入lxml.etree
3.etree.parse() 解析本地文件
4.etree.HTML() 伺服器響應文件
5.解析獲取DOM元素
1.路徑查詢
2.謂詞查詢
3.屬性查詢
4.模糊查詢
5.內容查詢
6.邏輯運算
示例:
JsonPath只能解析本地文件。
pip安裝:
jsonpath的使用:
示例:
解析上面的json數據
缺點:效率沒有lxml的效率高
優點:介面設計人性化,使用方便
pip install bs4 -i
from bs4 import BeautifulSoup
1.根據標籤名查找節點
soup.a.attrs
2.函數
find(『a』):只找到第一個a標籤
find(『a』, title=『名字』)
find(『a』, class_=『名字』)
find_all(『a』) :查找到所有的a
find_all([『a』, 『span』]) 返回所有的a和span
find_all(『a』, limit=2) 只找前兩個a
obj.string
obj.get_text()【推薦】
tag.name:獲取標籤名
tag.attrs:將屬性值作為一個字典返回
obj.attrs.get(『title』)【常用】
obj.get(『title』)
obj[『title』]
示例:
使用BeautifulSoup解析上面的html
python3怎麼抓取
頁面解析有多種方法。
1. 使用beautifulsoup框架。
from bs4 import BeautifulSoup
bs = BeautifulSoup(‘網頁源碼’, “html.parser”)
bs.table # 可以直接獲取table元素
bs.find(‘table’,attrs = {‘class’:’mytable’}) # 查找class屬性值為mytable的table元素
# 具體方法可以參見官方文檔
2. 使用正則表達式
怎樣用Python的BeautifulSoup修改頁面里的元素?
BeautifulSoup是不能夠直接修改tag的值的,但是可以修改tag中的屬性的值:
例如,把rows從142改為153,把cols改為33等等;
如果只是輸出顯示的話,可以使用Python的replace:
mystring=’textarea name=”text” rows=”142″ cols=”23″ wrap=”physic”sdasd/textarea’
soup=BeautifulSoup(mystring)
print str(soup.textarea).replace(‘sdasd’,’new’)
如何利用Python自動完成對網頁平台上可點擊的元素操作,用什麼模塊,具體函數有哪些,請大神指教
用selenium就可以了,它模擬打開瀏覽器,打開網頁。
通過頁面元素的特徵,定位到要點擊的元素,click()方法就可以完成點擊
比如
self.driver.find_element_by_xpath(‘//ul[@class=”uhomeTagList-ul”]/li[2]’).click()
Python解析庫lxml與xpath用法總結
本文主要圍繞以xpath和lxml庫進行展開:
一、xpath 概念、xpath節點、xpath語法、xpath軸、xpath運算符
二、lxml的安裝、lxml的使用、lxml案例
一、xpath
1.xpath概念
XPath 是一門在 XML 文檔中查找信息的語言。XPath 使用路徑表達式在 XML 文檔中進行導航 。XPath 包含一個標準函數庫 。XPath 是 XSLT 中的主要元素 。XPath 是一個 W3C 標準 。
2.xpath節點
xpath有七種類型的節點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔(根)節點。
節點關係:父、子、兄弟、先輩、後輩。
3.xpath語法
xpath語法在W3c網站上有詳細的介紹,這裡截取部分知識,供大家學習。
XPath 使用路徑表達式在 XML 文檔中選取節點。節點是通過沿著路徑或者 step 來選取的。下面列出了最有用的路徑表達式:
在下面的表格中,我們已列出了一些路徑表達式以及表達式的結果:
謂語用來查找某個特定的節點或者包含某個指定的值的節點。
謂語被嵌在方括弧中。
在下面的表格中,我們列出了帶有謂語的一些路徑表達式,以及表達式的結果:
XPath 通配符可用來選取未知的 XML 元素。
在下面的表格中,我們列出了一些路徑表達式,以及這些表達式的結果:
通過在路徑表達式中使用”|”運算符,您可以選取若干個路徑。
在下面的表格中,我們列出了一些路徑表達式,以及這些表達式的結果:
4.xpath 軸
軸可定義相對於當前節點的節點集。
5.xpath運算符
下面列出了可用在 XPath 表達式中的運算符:
好了,xpath的內容就這麼多了。接下來我們要介紹一個神器lxml,他的速度很快,曾經一直是我使用beautifulsoup時最鍾愛的解析器,沒有之一,因為他的速度的確比其他的html.parser 和html5lib快了許多。
二、lxml
1.lxml安裝
lxml 是一個xpath格式解析模塊,安裝很方便,直接pip install lxml 或者easy_install lxml即可。
2.lxml 使用
lxml提供了兩種解析網頁的方式,一種是你解析自己寫的離線網頁時,另一種 則是解析線上網頁。
導入包:
1.解析離線網頁:
2.解析在線網頁:
那麼我們怎麼獲取這些標籤和標籤對應的屬性值了,很簡單,首先獲取標籤只需你這樣做:
然後我們可以,比方說,你要獲取a標籤內的文本和它的屬性href所對應的值,有兩種方法,
1.表達式內獲取
2.表達式外獲取
這樣就完成了獲取,怎麼樣,是不是很簡單了,哈哈哈。
下面再來lxml的解析規則:
3.lxml案例
為了偷懶,我決定還是採用urllib那篇文章的代碼,哈哈哈,機智如我。
原創文章,作者:W1GWB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/128883.html