Python爬蟲——XPath
XPath
表示式 | 描述 |
---|---|
nodename | 選取此節點的所有子節點 |
/ | 從根節點選取 |
//xxx | 從匹配選擇的當前節點選擇文件中的節點,而不考慮它們的位置 |
. | 選取當前節點 |
.. | 選取當前節點的父節點 |
@xxx | 選取屬性內容 |
/text() | 選取文字內容 |
starts-with(@屬性名稱,屬性字元相同部分) | 以相同字元開始 |
演示使用HTML內容
html = '''
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>測試-常規用法</title>
</head>
<body>
<div id="content">
<ul id="test1">
<li>這是第一條資訊</li>
<li>這是第二條資訊</li>
<li>這是第三條資訊</li>
</ul>
<ul id="test2">
<li>這是第4條資訊</li>
<li>這是第5條資訊</li>
<li>這是第6條資訊</li>
</ul>
<div id="url">
<a href="http://www.baidu.com">百度</a>
<a href="http://www.163.com" title="Netease">網易</a>
</div>
</div>
</body>
</html>
'''
lxml庫
from lxml import etree
selector = etree.HTML()
content = selector.xpath()
/代表根節點開始的逐層獲取
from lxml import etree
selector = etree.HTML(html)
content = selector.xpath('/html/head/title/text()')
print(content)
獲取所有的li標籤
selector = etree.HTML(html)
content = selector.xpath('//li')
for c in content:
print(c)
獲取所有title屬性的值
selector = etree.HTML(html)
content = selector.xpath('//@title')
for c in content:
print(c)
[]獲取列表的index
selector = etree.HTML(html)
content = selector.xpath('//ul[2]/li[1]/text()')
for c in content:
print(c)
# 這是第4條資訊
獲取所有的li的文字內容,無論在什麼位置
selector = etree.HTML(html)
content = selector.xpath('//li/text()')
for c in content:
print(c)
獲取屬性id=url的div下層的a標籤所有href地址
selector = etree.HTML(html)
content = selector.xpath('//div[@id="url"]/a/@href')
for c in content:
print(c)
獲取屬性class="test1"的ul下層的最後一個li標籤的文字內容
selector = etree.HTML(html)
content = selector.xpath('//ul[@class="test1"]/li[last()]/text()')
print(content)
獲取所有含有id屬性且值為test1的ul下層li的文字內容
selector = etree.HTML(html)
content = selector.xpath('//ul[@id="test1"]/li/text()')
for c in content:
print(c)
豆瓣讀書250資料抓取
<table width="100%">
<tbody><tr class="item">
<td width="100" valign="top">
<a class="nbg" href="https://book.douban.com/subject/25862578/" onclick="moreurl(this,{i:'1'})">
<img src="https://img3.doubanio.com/view/subject/m/public/s27264181.jpg" width="90">
</a>
</td>
<td valign="top">
<div class="pl2">
<a href="https://book.douban.com/subject/25862578/" onclick=""moreurl(this,{i:'1'})"" title="解憂雜貨店">
解憂雜貨店
</a>
<br>
<span style="font-size:12px;">ナミヤ雑貨店の奇蹟</span>
</div>
<p class="pl">[日] 東野圭吾 / 李盈春 / 南海出版公司 / 2014-5 / 39.50元</p>
<div class="star clearfix">
<span class="allstar45"></span>
<span class="rating_nums">8.6</span>
<span class="pl">(
294790人評價
)</span>
</div>
<p class="quote" style="margin: 10px 0; color: #666">
<span class="inq">一碗精心熬製的東野牌雞湯,拒絕很難</span>
</p>
</td>
</tr>
</tbody></table>
import requests
from lxml import etree
headers={
'Accept':'*/*',
'Accept-Encoding':'gzip, deflate',
'Accept-Language':'zh-CN,zh;q=0.8',
'Connection':'keep-alive',
'Origin':'https://book.douban.com',
'Referer':'https://book.douban.com/',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'
}
for i in range(0, 10):
url = 'https://book.douban.com/top250?start={}'.format(i * 25)
html = requests.get(url, headers=headers).content
sel = etree.HTML(html)
tables = sel.xpath('//div[@class="indent"]/table')
for table in tables:
item = table.xpath('tr[@class="item"]/td[@valign="top"][2]')
print(item[0].xpath('div[@class="pl2"]/a/@title')[0])
print(item[0].xpath('p[@class="pl"]/text()')[0])
quote = item[0].xpath('p[@class="quote"]/span/text()')
if quote:
print([0])
相關文章
- Python爬蟲-xpathPython爬蟲
- Python爬蟲——Xpath和lxmlPython爬蟲XML
- Python爬蟲之XPath語法Python爬蟲
- 爬蟲 – xpath 匹配爬蟲
- Python爬蟲之資料解析(XPath)Python爬蟲
- Python爬蟲:Xpath語法筆記Python爬蟲筆記
- python爬蟲:XPath語法和使用示例Python爬蟲
- Python爬蟲教程-21-xpath 簡介Python爬蟲
- 爬蟲之xpath的使用爬蟲
- 爬蟲---xpath解析(爬取美女圖片)爬蟲
- Python 爬蟲網頁內容提取工具xpath(一)Python爬蟲網頁
- Python 爬蟲網頁內容提取工具xpath(二)Python爬蟲網頁
- 爬蟲解析庫:XPath 輕鬆上手爬蟲
- 基於 go + xpath 爬蟲小案例Go爬蟲
- Python爬蟲基礎講解(七):xpath的語法Python爬蟲
- Python爬蟲教程-22-lxml-etree和xpath配合使用Python爬蟲XML
- 爬蟲實戰:探索XPath爬蟲技巧之熱榜新聞爬蟲
- 爬蟲之xpath精準定位--位置定位爬蟲
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- 【python爬蟲】python爬蟲demoPython爬蟲
- Datawhale-爬蟲-Task4(學習xpath)爬蟲
- 基於asyncio、aiohttp、xpath的非同步爬蟲AIHTTP非同步爬蟲
- scrapy爬蟲程式xpath中文編碼報錯爬蟲
- python動態網站爬蟲實戰(requests+xpath+demjson+redis)Python網站爬蟲JSONRedis
- Python web自動化爬蟲-selenium/處理驗證碼/XpathPythonWeb爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- Python爬蟲十六式 - 第四式: 使用Xpath提取網頁內容Python爬蟲網頁
- python就是爬蟲嗎-python就是爬蟲嗎Python爬蟲
- python爬蟲Python爬蟲
- python 爬蟲Python爬蟲
- Python爬蟲教程-01-爬蟲介紹Python爬蟲
- Java爬蟲與Python爬蟲的區別?Java爬蟲Python
- python爬蟲初探--第一個python爬蟲專案Python爬蟲
- Python asyncio 爬蟲Python爬蟲
- python爬蟲2Python爬蟲
- Python 爬蟲系列Python爬蟲
- Python爬蟲--2Python爬蟲
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程Python爬蟲