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...