糗事百科案例(使用 xpath模組)
通過一個案列先了解下json與python之間的轉換關係
#json解析庫,對應到lxml
import json
#json的解析語法,對應到xpath
import jsonpath
import urllib2
url="http://www.lagou.com/lbs/getAllCitySearchLabels.json"
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"}
request=urllib2.Request(url,headers=headers)
response=urllib2.urlopen(request)
#返回json檔案裡面的內容,返回的格式是字串
html=response.read()
# print html.encode("gb18030")
#把json轉換成python格式的unicode字串
unicodestr=json.loads(html)
city_list=jsonpath.jsonpath(unicodestr,"$..name")#從當前節點的任意位置匹配name,返回一個列表
# for i in city_list:
# print i
#dumps預設中文為ascii編碼格式
#把python格式的轉換為json格式的,返回的是unicode字串
#禁用ascii編碼格式,返回的unicode字串,方便使用(轉碼)
array=json.dumps(city_list,ensure_ascii=False)
with open("city_list.txt","w") as f:
f.write(array.encode("gb18030"))
爬糗事百科獲取每個段子的使用者名稱,每個段子中的圖片,還有每個段子的內容,每個段子的點贊人數還有評論人數
# https://www.qiushibaike.com/8hr/page/3/
# //div[contains(@id,"qiushi_tag")]
# 段子名字
# .//h2[1]#在當前節點下找,所以直接是.就行
# 點贊人數
# ./div/span/i
# 評論人數
# ./div/span/a/i
# 段子內容
# .//div[@class="content"]/span
# 圖片連結
# .//div[@class="thumb"]//@src
import urllib2
import json
from lxml import etree
url="https://www.qiushibaike.com/8hr/page/3/"
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"}
request=urllib2.Request(url,headers=headers)
response=urllib2.urlopen(request)
html=response.read()
#把htmll轉換成html dom
text=etree.HTML(html)
#返回所有 段子的節點位置,contains()模糊查詢方法,第一個引數是要匹配的標籤,第二個引數是標籤名部分內容
node_list=text.xpath('//div[contains(@id,"qiushi_tag")]')
data={}
for node in node_list:
#使用者名稱
username=(node.xpath(".//h2"))[0].text#因為node.xpath(".//h2")返回的是列表,裡面裝的是content,因為一個段子只有一個content,所以這個列表裡面就有一個content,我們用[0],把這個content取出來
#段子內容(取出標籤下的內容,所以要加text)
content=(node.xpath('.//div[@class="content"]/span'))[0].text
#取出標籤下的內容,點讚的人數
dianzan=(node.xpath('./div/span/i'))[0].text
#評論的內容
pinglun=(node.xpath('./div/span/a/i'))[0].text
#段子中圖片的url
img=(node.xpath('.//div[@class="thumb"]//@src'))
if len(img)>=1:
img="http:"+img[0]
data={"username":username,
"content":content,
"dianzan":dianzan,
"pinglun":pinglun,
"img":img}
we=json.dumps(data,ensure_ascii=False)#把python格式的轉換為json格式,此時轉換成了字串,就可以寫入糗事段子.txt檔案中了
with open(u"糗事段子.txt","a") as f:
f.write(we+'\n')#每個段子之間換行
相關文章
- python爬取糗事百科Python
- Python爬取糗事百科段子Python
- [外掛擴充套件]糗事百科QiuBa套件
- Python資料分析之糗事百科Python
- python爬蟲爬取糗事百科Python爬蟲
- python爬蟲十二:middlewares的使用,爬取糗事百科Python爬蟲
- 仿的一個笑話網站 糗事百科網站
- python多執行緒爬去糗事百科Python執行緒
- 網路爬蟲——爬取糗事百科笑料段子爬蟲
- python爬蟲學習(1)-抓取糗事百科笑話Python爬蟲
- python3.6.5 爬取糗事百科,開心一下Python
- Python re模組, xpath 用法Python
- 網路爬蟲——專案實戰(爬取糗事百科所有文章)爬蟲
- 仿糗事百科笑話系統原始碼,PHP笑話系統原始碼原始碼PHP
- 基於 go + xpath 爬蟲小案例Go爬蟲
- 測試工具-XPath使用
- 爬蟲之xpath的使用爬蟲
- Golang語言之Prometheus的日誌模組使用案例GolangPrometheus
- python使用xpath(超詳細)Python
- Xpath
- XPath 教程
- xpath解析
- 初始xpath
- python爬蟲:XPath語法和使用示例Python爬蟲
- 使用python爬取百度百科Python
- Xpath helper外掛
- 爬蟲 – xpath 匹配爬蟲
- python xpath用法Python
- XPath 語法概述
- jsoup、xpath教程JS
- 使用 XPath 在 Rational Functional Tester 中動態識別物件Function物件
- 超全面百度百科建立乾貨分享|企業百科&品牌百科&人物百科建立規則和技巧
- Xpath語法格式整理
- xPath 用法總結整理
- XPath學習筆記筆記
- Python爬蟲——XPathPython爬蟲
- Python爬蟲-xpathPython爬蟲
- xpath的部分語法