回顧Xpath(爬取時光網電影TOP100)

2021-09-12 16:30:04 字數 1883 閱讀 9766

import requests

from lxml import etree

#爬取時光電影網top100

headers =

def get_information(html):

infos = html.xpath('//*[@id="asyncratingregion"]/li')#找到迴圈節點

for info in infos:

#排名 鏈結 鏈結 電影名 導演 主演 型別 簡介 評分

rank = info.xpath('div[1]/em/text()')[0]#排名

main_url = info.xpath('div[2]/a/@href')[0]#鏈結

pic_url = info.xpath('div[2]/a/img/@src')[0]#電影資訊鏈結

name = info.xpath('div[2]/a/img/@alt')[0]#電影名字

author = info.xpath('div[3]/p[1]/a/text()')[0]#導演

#第三十名的格局不一樣,要用if語句判斷然後單獨列出。

#演員,因為人數不確定,直接全部抽取然後用切片全部提到列表裡(下同)

actor = info.xpath('div[3]/p[2]/a/text()')[:9]

if actor:

pass

else:

actor = ['此作品無主演資訊!!']

#要賦值成列表方式,要不然join會連線成['此','作','品'...'!','!']

form = info.xpath('div[3]/p[3]/span/a/text()')[:9]

if form:

pass

else:

form = info.xpath('div[3]/p[2]/span/a/text()')[:9]

main = info.xpath('div[3]/p[4]/text()')

if main:

main = main[0]

else:

main = info.xpath('div[3]/p[3]/text()')[0]

point = info.xpath('div[4]/b/span/text()')[:9]

#開啟方式要用utf-8,不然爬不下來。

#把上面提取的是列表的用join方法連線成字串。

with open("f://時光電影.text",'a+',encoding = 'utf-8') as fp:

fp.write(str([rank, main_url, pic_url, name, author, ','.join(actor), ','.join(form), main, ''.join(point)]) + '\n')

if __name__ == "__main__":

#構造翻頁url

urls = ["".format(i) for i in range(1,11)]

#定義乙個bool型別的標誌flag,用於判斷

flag = true

for url in urls:

#因為第乙個url和後面的不一致,需要單獨列出來,然後利用flag更改第乙個url

if flag == true:

url = ""

flag = false

else:

pass

print(url)#列印url,便於檢視

response = requests.get(url,headers = headers)

html = etree.html(response.text)

get_information(html)#呼叫函式

python爬蟲之爬取時光網電影影評

最近看了美國往事這部電影。於是就想到最近剛學的爬蟲,就像試試把時光網影評爬取下來,並按照影評的名字存放在本地資料夾。在長影評頁面可以看到每篇文章的標題對應都有乙個blogid,並且這個id對應該影評正文頁的字尾 那麼我們便可以通過這個id來實現獲取當前頁所有影評的位址 首先定義乙個方法 id 儲存電...

利用xpath解析器爬取豆瓣電影top250

首先宣告需要用的庫,當然我還用到了os庫,將工作路徑修改到了我指定的路徑。os.chdir r c users from lxml import etree import requests import time import json豆瓣top250總共有10頁,每頁25部電影,每頁的url都是有...

爬取豆瓣top20電影

import requests from lxml import etree url for i in range 2 url format i 10 訪問目標 response requests.get url url 獲取頁面內容 text html response.text print ht...