您好,登錄后才能下訂單哦!
根據(jù)一個(gè)爬取豆瓣電影排名的小應(yīng)用,來簡(jiǎn)單使用etree和request庫(kù)。
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) # 設(shè)置網(wǎng)頁編碼格式 req.encoding = 'utf8' # 將request.content 轉(zhuǎn)化為 Element root = etree.HTML(req.content) # 選取 ol/li/div[@class="item"] 不管它們?cè)谖臋n中的位置 items = root.xpath('//ol/li/div[@class="item"]') for item in items: # 注意可能只有中文名,沒有英文名;可能沒有quote簡(jiǎn)評(píng) 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', '') # 輸出 排名,評(píng)分,簡(jiǎn)介 print(rank, rating_num, quote) # 輸出 中文名,英文名 print(name.encode('gb2312', 'ignore').decode('gb2312'), alias.encode('gb2312', 'ignore').decode('gb2312').replace('/', ',')) except: print('faild!') pass
程序運(yùn)行結(jié)果:
補(bǔ)充知識(shí):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)頁內(nèi)容 html_doc = res.content.decode("utf-8") print(html_doc[:500]) # 保存網(wǎng)頁內(nèi)容 with open('test.html', 'w') as f: f.write(html_doc)
運(yùn)行結(jié)果:
<!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>小學(xué)老師罰學(xué)生赤腳跑操場(chǎng) 官方:將按規(guī)定處理|赤腳|學(xué)生|華龍網(wǎng)_新浪新聞</title> <meta name="keywords" content="赤腳,學(xué)生,華龍網(wǎng)" /> <meta name="tags" content="赤腳,學(xué)生,華龍網(wǎng)" /> <meta name="description" content="原標(biāo)題:潼南一小學(xué)體育老師罰學(xué)生赤腳跑操場(chǎng)續(xù):區(qū)教委向華龍網(wǎng)發(fā)來情況
代碼:
# xpath解析 from lxml import etree # 建立html的樹 tree = etree.HTML(html_doc) # 設(shè)置目標(biāo)路徑(標(biāo)題) path_title = '/html/body//h2[@class="main-title"]//text()' # 提取節(jié)點(diǎn) node_title = tree.xpath(path_title) print("===" * 20) print(node_title[0]) # 設(shè)置內(nèi)容路徑 path_content = '//div[@class="article-content-left"]//div[@id="article"]//text()' # 提取節(jié)點(diǎn) node_content = tree.xpath(path_content) print("===" * 20) print("。".join(node_content))
運(yùn)行結(jié)果:
============================================================ 小學(xué)老師罰學(xué)生赤腳跑操場(chǎng) 官方:將按規(guī)定處理 ============================================================ ?! ≡瓨?biāo)題:潼南一小學(xué)體育老師罰學(xué)生赤腳跑操場(chǎng)續(xù):區(qū)教委向華龍網(wǎng)發(fā)來情況說明。 。 重慶客戶端-華龍網(wǎng)5月9日消息,這兩天,重慶潼南區(qū)朝陽小學(xué)二年級(jí)6班不少家長(zhǎng)心疼不已,因?yàn)槎鄠€(gè)娃兒腳底被磨出了泡。一問才知道,是因?yàn)橛行W(xué)生體育課上沒穿運(yùn)動(dòng)鞋,被體育老師要求赤腳在操場(chǎng)上跑步。收到重慶網(wǎng)絡(luò)問政平臺(tái)這一投訴后,華龍網(wǎng)記者立即進(jìn)行了調(diào)查。今(9)日,華龍網(wǎng)發(fā)布了?!吨貞c潼南一小學(xué)體育老師罰學(xué)生赤腳跑操場(chǎng)腳底磨出泡當(dāng)?shù)亟涛槿搿?。?bào)道后,潼南教委高度重視并給華龍網(wǎng)傳來官方的情況說明。。 ?!??!說明全文]。 ?! £P(guān)于家長(zhǎng)在華龍網(wǎng)投訴教師上體育課體罰學(xué)生的情況說明。 ?! ′蠀^(qū)朝陽小學(xué)體育教師鄒老師于2018年5月7日上午上體育課時(shí),發(fā)現(xiàn)該班有少部分名學(xué)生未按體育課的要求穿運(yùn)動(dòng)鞋。該教師認(rèn)為,穿著涼鞋跑步對(duì)學(xué)生本人及他人存在安全隱患,塑膠跑道不會(huì)對(duì)學(xué)生光腳運(yùn)動(dòng)造成影響,于是就叫未穿運(yùn)動(dòng)鞋的學(xué)生,脫掉涼鞋進(jìn)行隨班熱身跑步。當(dāng)時(shí)鄒老師未發(fā)現(xiàn)學(xué)生有異常情況,也未接到學(xué)生有異常情況的反映。后經(jīng)家長(zhǎng)反映到學(xué)校,有極少數(shù)光著腳跑步的學(xué)生有異常情況,學(xué)校庚即與部分家長(zhǎng)進(jìn)行了溝通,并及時(shí)調(diào)查了解了此事,并對(duì)該教師這種不恰當(dāng)教學(xué)方法進(jìn)行了批評(píng)教育,我們將按相關(guān)規(guī)定對(duì)該教師作出相應(yīng)的處理。。 ?! ≈貞c市潼南區(qū)教育委員會(huì)。 ?! ?018年5月9日。 。 來源:華龍網(wǎng)。 。責(zé)任編輯:張義凌 。
以上這篇python3 xpath和requests應(yīng)用詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。