python3 xpath和requests應用詳解
更新時間:2020年03月06日 13:03:10 作者:jeikerxiao
這篇文章主要介紹了python3 xpath和requests應用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
根據(jù)一個爬取豆瓣電影排名的小應用,來簡單使用etree和request庫。
etree使用xpath語法。
import requests
import ssl
from lxml import etree
ssl._create_default_https_context = ssl._create_unverified_context
session = requests.Session()
for id in range(0, 251, 25):
URL = 'https://movie.douban.com/top250/?start=' + str(id)
req = session.get(URL)
# 設置網(wǎng)頁編碼格式
req.encoding = 'utf8'
# 將request.content 轉化為 Element
root = etree.HTML(req.content)
# 選取 ol/li/div[@class="item"] 不管它們在文檔中的位置
items = root.xpath('//ol/li/div[@class="item"]')
for item in items:
# 注意可能只有中文名,沒有英文名;可能沒有quote簡評
rank, name, alias, rating_num, quote, url = "", "", "", "", "", ""
try:
url = item.xpath('./div[@class="pic"]/a/@href')[0]
rank = item.xpath('./div[@class="pic"]/em/text()')[0]
title = item.xpath('./div[@class="info"]//a/span[@class="title"]/text()')
name = title[0].encode('gb2312', 'ignore').decode('gb2312')
alias = title[1].encode('gb2312', 'ignore').decode('gb2312') if len(title) == 2 else ""
rating_num = item.xpath('.//div[@class="bd"]//span[@class="rating_num"]/text()')[0]
quote_tag = item.xpath('.//div[@class="bd"]//span[@class="inq"]')
if len(quote_tag) is not 0:
quote = quote_tag[0].text.encode('gb2312', 'ignore').decode('gb2312').replace('\xa0', '')
# 輸出 排名,評分,簡介
print(rank, rating_num, quote)
# 輸出 中文名,英文名
print(name.encode('gb2312', 'ignore').decode('gb2312'),
alias.encode('gb2312', 'ignore').decode('gb2312').replace('/', ','))
except:
print('faild!')
pass
程序運行結果:

補充知識:requests抓取以及Xpath解析
代碼:
# requests抓取
import requests
# 新浪新聞的一篇新聞的url
url = 'http://news.sina.com.cn/s/2018-05-09/doc-ihaichqz1009657.shtml'
res = requests.get(url)
# 查看編碼方式
enconding = requests.utils.get_encodings_from_content(res.text)
#print(enconding)
# 打印網(wǎng)頁內容
html_doc = res.content.decode("utf-8")
print(html_doc[:500])
# 保存網(wǎng)頁內容
with open('test.html', 'w') as f:
f.write(html_doc)
運行結果:
<!DOCTYPE html> <!-- [ published at 2018-05-09 18:23:13 ] --> <!-- LLTJ_MT:name ="澎湃新聞" --> <html> <head> <meta charset="utf-8"/> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <meta name="sudameta" content="urlpath:s/; allCIDs:51924,257,51895,200856,56264,258,38790"> <title>小學老師罰學生赤腳跑操場 官方:將按規(guī)定處理|赤腳|學生|華龍網(wǎng)_新浪新聞</title> <meta name="keywords" content="赤腳,學生,華龍網(wǎng)" /> <meta name="tags" content="赤腳,學生,華龍網(wǎng)" /> <meta name="description" content="原標題:潼南一小學體育老師罰學生赤腳跑操場續(xù):區(qū)教委向華龍網(wǎng)發(fā)來情況
代碼:
# xpath解析
from lxml import etree
# 建立html的樹
tree = etree.HTML(html_doc)
# 設置目標路徑(標題)
path_title = '/html/body//h1[@class="main-title"]//text()'
# 提取節(jié)點
node_title = tree.xpath(path_title)
print("===" * 20)
print(node_title[0])
# 設置內容路徑
path_content = '//div[@class="article-content-left"]//div[@id="article"]//text()'
# 提取節(jié)點
node_content = tree.xpath(path_content)
print("===" * 20)
print("。".join(node_content))
運行結果:
============================================================ 小學老師罰學生赤腳跑操場 官方:將按規(guī)定處理 ============================================================ ?! ≡瓨祟}:潼南一小學體育老師罰學生赤腳跑操場續(xù):區(qū)教委向華龍網(wǎng)發(fā)來情況說明。 ?! ≈貞c客戶端-華龍網(wǎng)5月9日消息,這兩天,重慶潼南區(qū)朝陽小學二年級6班不少家長心疼不已,因為多個娃兒腳底被磨出了泡。一問才知道,是因為有些學生體育課上沒穿運動鞋,被體育老師要求赤腳在操場上跑步。收到重慶網(wǎng)絡問政平臺這一投訴后,華龍網(wǎng)記者立即進行了調查。今(9)日,華龍網(wǎng)發(fā)布了?!吨貞c潼南一小學體育老師罰學生赤腳跑操場腳底磨出泡當?shù)亟涛槿搿?。報道后,潼南教委高度重視并給華龍網(wǎng)傳來官方的情況說明。。 ?! !說明全文]。 ?! £P于家長在華龍網(wǎng)投訴教師上體育課體罰學生的情況說明。 ?! ′蠀^(qū)朝陽小學體育教師鄒老師于2018年5月7日上午上體育課時,發(fā)現(xiàn)該班有少部分名學生未按體育課的要求穿運動鞋。該教師認為,穿著涼鞋跑步對學生本人及他人存在安全隱患,塑膠跑道不會對學生光腳運動造成影響,于是就叫未穿運動鞋的學生,脫掉涼鞋進行隨班熱身跑步。當時鄒老師未發(fā)現(xiàn)學生有異常情況,也未接到學生有異常情況的反映。后經(jīng)家長反映到學校,有極少數(shù)光著腳跑步的學生有異常情況,學校庚即與部分家長進行了溝通,并及時調查了解了此事,并對該教師這種不恰當教學方法進行了批評教育,我們將按相關規(guī)定對該教師作出相應的處理。。 。 重慶市潼南區(qū)教育委員會。 ?! ?018年5月9日。 。 來源:華龍網(wǎng)。 。責任編輯:張義凌 。
以上這篇python3 xpath和requests應用詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- python中requests庫+xpath+lxml簡單使用
- python使用XPath解析數(shù)據(jù)爬取起點小說網(wǎng)數(shù)據(jù)
- python 網(wǎng)頁解析器掌握第三方 lxml 擴展庫與 xpath 的使用方法
- python利用xpath爬取網(wǎng)上數(shù)據(jù)并存儲到django模型中
- Python Selenium XPath根據(jù)文本內容查找元素的方法
- python Xpath語法的使用
- python3顯式變量類型typing的實現(xiàn)
- Python使用xpath實現(xiàn)圖片爬取
- 利用Python中的Xpath實現(xiàn)一個在線匯率轉換器
- python selenium xpath定位操作
- Python xpath表達式如何實現(xiàn)數(shù)據(jù)處理
- Python利用Xpath選擇器爬取京東網(wǎng)商品信息
- Python使用requests xpath 并開啟多線程爬取西刺代理ip實例
- Python3 xml.etree.ElementTree支持的XPath語法詳解
- python-xpath獲取html文檔的部分內容
- 關于python中的xpath解析定位
- python定位xpath 節(jié)點位置的方法
- Python自動化之定位方法大殺器xpath
相關文章
Python執(zhí)行外部命令subprocess的使用詳解
subeprocess模塊是python自帶的模塊,無需安裝,主要用來取代一些就的模塊或方法,本文通過實例代碼給大家分享Python執(zhí)行外部命令subprocess及使用方法,感興趣的朋友跟隨小編一起看看吧2021-05-05
基于Python實現(xiàn)報表自動化并發(fā)送到郵箱
作為數(shù)據(jù)分析師,我們需要經(jīng)常制作統(tǒng)計分析圖表。但是報表太多的時候往往需要花費我們大部分時間去制作報表。本文將利用Python實現(xiàn)報表自動化并發(fā)送到郵箱,需要的可以參考一下2022-07-07
Python利用docx模塊實現(xiàn)快速操作word文件
這篇文章主要為大家詳細介紹了Python如何利用docx模塊實現(xiàn)快速操作word文件,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2022-09-09
Python中np.random.randint()參數(shù)詳解及用法實例
numpy.random.randint()函數(shù)不僅可以生成一維隨機數(shù)組,也可以生成多維度的隨機數(shù)組,下面這篇文章主要給大家介紹了關于Python中np.random.randint()參數(shù)詳解及用法的相關資料,需要的朋友可以參考下2022-09-09

