糗事百科案例(使用 xpath模組)

2021-08-09 19:40:13 字數 2244 閱讀 9297

通過乙個案列先了解下json與python之間的轉換關係

#json解析庫,對應到lxml

import json

#json的解析語法,對應到xpath

import jsonpath

import urllib2

url=""

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"))

# 

# //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=""

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

we=json.dumps(data,ensure_ascii=false)#把python格式的轉換為json格式,此時轉換成了字串,就可以寫入糗事段子.txt檔案中了

with open(u"糗事段子.txt","a") as f:

f.write(we+'\n')#每個段子之間換行

多執行緒糗事百科案例

爬取糗事百科段子,假設頁面的url是 要求 1.使用requests獲取頁面資訊,用xpath re 做資料提取 3.儲存到 json 檔案內 queue 佇列物件 1.queue是python中的標準庫,可以直接import queue引用 佇列是執行緒間最常用的交換資料的形式,對於資源,加鎖是個...

糗事百科 三

爸,老師讓你去學校一趟。你又闖什麼禍了!打。打抱不平來著。打抱不平?常言道虎父無犬子,真不愧是我兒子 老師 看你兒子把鮑步平小朋友打的!怎麼陪吧!記得前一陣熱播民兵葛二蛋,然後我們全家都姓葛.割了一把心酸淚.中午吃飯的時候弟弟特委屈的問我,姐姐為什麼我們全班都叫我葛二蛋?t t 我一口飯沒嚥下去,心...

爬取糗事百科列表頁案例

import requests from lxml import etree importre 爬取糗事百科所有列表頁資訊 class qiushi def init self,base url self.base url base url self.max page self.get max pa...