通過乙個案列先了解下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...