爬虫-用xpath爬取豆瓣图书的短评
Xpath的安裝:
1.使用pip安裝? ? $ pip install lxml
2.下載whl文件? ? $ pip install "文件名"
Xpath的使用
導入lxml——>返回xml結構——>尋找數據
from lxml import etreeurl = ""s = etree.HTML(url)print(s.xpath())1.獲取文本內容用text()
2.獲取注釋用comment()
3.獲取其他任何屬性用@xx,如
- @href
- @src
- @value
4.想獲取某個標簽下的所有文本(包括子標簽下的文本),使用string
5.starts-with 匹配字符串前面相等
6.contains 匹配任何位置相等
下面用xpth爬取豆瓣讀書?
分析網站:
爬取的是豆瓣讀書網中圖書的短評,網站地址:豆瓣讀書短評
?打開瀏覽器開發者模式,按住Ctrl+Shirt+C然后點擊第一條評論。
?瀏覽器會自己找到我們所點擊的地方,然后右鍵Copy——>Copy XPath。
?
?結果://*[@id="comments"]/ul/li[1]/div[2]/p/span
import requests from lxml import etree url = "https://book.douban.com/subject/25924253/comments/ resp = requests.get(url).text print(s.xpath('//*[@id="comments"]/ul/li[1]/div[2]/p/span/text()'))?
下面我們爬取這一頁所有的短評,先copy Xpath上幾個,看看有什么規律
第一個短評://*[@id="comments"]/ul/li[1]/div[2]/p/span
第二個短評://*[@id="comments"]/ul/li[2]/div[2]/p/span
第三個短評://*[@id="comments"]/ul/li[3]/div[2]/p/span
很容易發現li[]隨著短評數目增加而增加,此時只需要改成//*[@id="comments"]/ul/li/div[2]/p/span就行了
import requests from lxml import etree url = "https://book.douban.com/subject/25924253/comments/" resp = requests.get(url).text s = etree.HTML(resp) print(s.xpath('//*[@id="comments"]/ul/li/div[2]/p/span/text()'))發現是不是很容易呢?如果要爬取多頁的短評呢?此時點擊下一頁看看網址有什么變化。
第一頁網址:https://book.douban.com/subject/25924253/comments/
第二頁網址:https://book.douban.com/subject/25924253/comments/hot?p=2
第三頁網址:https://book.douban.com/subject/25924253/comments/hot?p=3
發現后面的p的取值決定第幾頁,這下就好辦了。
import requests from lxml import etree for i in range(1,10):url = "https://book.douban.com/subject/25924253/comments/hot?p={}".format(i)resp = requests.get(url).texts = etree.HTML(resp)print(s.xpath('//*[@id="comments"]/ul/li/div[2]/p/span/text()'))?
很容易就爬取到了,也可以寫入txt文本中,這里就不寫了。
?
?
?
總結
以上是生活随笔為你收集整理的爬虫-用xpath爬取豆瓣图书的短评的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Git 单文件上传大小限制
- 下一篇: 机器人理论简介—— 台湾交通大学机器人学