日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python爬虫,爬取猫眼电影2(xpath和bs4)

發(fā)布時間:2025/4/5 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫,爬取猫眼电影2(xpath和bs4) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

接著上面的。

使用xpath提取信息,雖然python很多庫,比如beautifulsoup,也有很多功能,比如查找節(jié)點,添加刪除節(jié)點。但是個人感覺對爬蟲來說,最重要的還是提取信息,當(dāng)然,順利的提取信息的前提是你得掌握好這些庫的用法,不過有些功能確實一輩子也不會用到。對爬蟲來說,就是提取文本,獲取屬性,這兩個。

還是打開頁面,這里我直接讀入本地的文件,知識為了簡單起見。不在requests了。

我們自己做網(wǎng)頁爬蟲的時候,還是需要借助一些工具的。比如xpath。我經(jīng)常用的就是 瀏覽器的xpath helper插件。可以很方便的看到xpath的路徑是否匹配到文本。

from lxml import etreee = etree.HTML(html) e.xpath("//title//text()")

具體到提取信息,還是需要借助瀏覽器插件。

?這樣,就可以看到是不是能提取到信息,如果不能,那就就是xpath有問題了。可以再改,

當(dāng)然也可以在element,元素上直接點擊右鍵,copy xpath,但是這只是有助于我們分析,往往只能提取個別的,不能用到一個網(wǎng)頁里面所有的電影。

?拷貝出來的xpath是這樣的。

?結(jié)果它只能匹配《我不是藥神》這一個電影名字。往往自己寫,加上拷貝,一起分析。簡單的xpath,直接就可以寫出來,比如這個例子。復(fù)雜的可以借助拷貝,再分析。

演員的信息可以這樣。

e = etree.HTML(html) dd = e.xpath('//div[@class="main"]//dd') print(len(dd)) for d in dd:index = d.xpath('.//i/text()')[0]img = d.xpath('.//a/img[2]/@data-src')[0]title = d.xpath('.//p[contains(@class,"name")]//text()')[0]actor = d.xpath('.//p[contains(@class,"star")]//text()')[0].strip()releasetime = d.xpath('.//p[contains(@class,"releasetime")]//text()')[0]score = d.xpath('.//p[contains(@class,"score")]//text()')score = "".join(score)print(index, img, title, actor, releasetime, score)

?這里我還是先把dd元素抓出來,然后再遍歷。

dd元素里面的每一個元素也是xpath對象,還是繼續(xù)用xpath提取信息。

為了省事,直接用的 contains方法, 其實也可以直接寫 成?

//dd//p[@class="star"]//text()

這樣的形式,但是我怕有的class里面的內(nèi)容不止是一個單詞,為了省事,還是用了contains安全一些。

得到結(jié)果。

?接下來用bs4

首先還是把html轉(zhuǎn)成bs4對象。

from bs4 import BeautifulSoupsoup = BeautifulSoup(html, 'lxml') # print(soup) items = soup.find_all('dd') # print(len(dd)) for item in items:index = item.i.stringtitle = item.find(class_='name').string,img = item.find(class_='board-img')['data-src'],star = item.find(class_='star').string.strip()[3:],time = item.find(class_='releasetime').string.strip()[5:],score = item.find(class_='integer').string.strip() + item.find(class_='fraction').string.strip()print(index, img, title, actor, releasetime, score)

?然后是css

同樣,還是讀入為css對象,只不過bs4里面就可以直接用css。

比如:

soup.select('dd:nth-child(1) .star') soup.select('dd i.board-index')[0]dd = soup.select('dd') ddfor d in dd:print(d.select('.star'))soup.select("dd p.star")[0].get_text() soup.select("dd i.board-index")[0].get_text()soup.select("dd .score i")[0].string soup.select("dd:nth-child(1) .integer")[0].string

先把dd解析為soup對象,然后,用select方法,就可以了。

bs4提取信息的函數(shù)是get_text(),

或者string,兩者結(jié)果是一樣的。

css選擇器,需要借助瀏覽器的chropath插件,

比如

我平時喜歡用scrapy的selector方法,里面支持xpath 和css,所以還是挺方便的,反正都要裝scrapy。所以一個解決所有問題。

總結(jié)

以上是生活随笔為你收集整理的python爬虫,爬取猫眼电影2(xpath和bs4)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。