使用requests和xpath爬取貓眼TOP100電影
阿新 • • 發佈:2019-01-26
技術路線:requests-xpath
- 使用 requests 獲取網頁內容
使用 try...except 獲取網頁內容
- 使用 xpath 解析網頁
對主要資訊使用 xpath 進行提取
- 翻頁及反爬處理
貓眼的翻頁處理是 url 處進行翻頁的
http://maoyan.com/board/4?offset=0
http://maoyan.com/board/4?offset=10
所以可以拼接處理url
貓眼的反爬主要是根據 user-agent 判斷,所以訪問的時候需要指定 headers
#!/usr/bin/env python # _*_ coding:utf-8 _*_ import requests from lxml import etree def getHtml(url, headers): try: r = requests.get(url, headers=headers) r.raise_for_status() r.encoding = 'utf-8' return r.text except: print('ERROR') def fillList(html): html = etree.HTML(html) img = html.xpath('//*[@id="app"]/div/div/div/dl/dd/a/img[2]/@data-src') # 這裡存在坑,使用Chrome檢視元素時,圖片屬性是src,實際使用requests獲取的時候,圖片屬性是data-src title = html.xpath('//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[1]/p[1]/a/text()') star = html.xpath('//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[1]/p[2]/text()') releasetime = html.xpath('//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[1]/p[3]/text()') for i in range(len(title)): temp = { 'img': img[i][:-16], # 提取圖片的時候存在圖片大小設定等,使用切片去除 'title': title[i], 'star': star[i].strip(), # 提取主演資訊的時候有很多空格跟換行符,使用.strip()函式去除 'releasetime': releasetime[i], } print(temp) def main(): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36' } deep = 10 for i in range(deep): url = 'http://maoyan.com/board/4?offset='+str(i*10) html = getHtml(url, headers=headers) print("正在列印第%s頁" % (i+1)) fillList(html) if __name__ == '__main__': main()