我們以爬取最新電影為例:
image.png
思路:先獲取電影的URL,然後在根據URL來分析網頁,最後提取我們需要的信息。
image.png
我們檢查網頁源碼可以發現,我們所要提取的每一部電影的詳細URL在
下面的每一個下面的href屬性,隻要找到每一部電影的URL,我們離爬取電影詳情就更加靠近了。
獲取每一部電影的詳細URL
import requests
from lxml import etree
header = {"User-Agent" :
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
"Referer" : "https://www.dytt8.net/"}
BASE_DOMAIN = 'https://www.dytt8.net/html/gndy/dyzz/list_23_1.html'
response = requests.get(BASE_DOMAIN, headers=header)
text = response.text
html = etree.HTML(text)
all_a = html.xpath("//div[@class='co_content8']//a")
for a in all_a:
b = "https://www.dytt8.net"
href = a.xpath("@href")[0]
if href.startswith('/'):
a_href = b + href
# print(a_href)
url = a_href
print(url)
接下來就是最重要的了,對我們獲取到的電影詳細頁面進行解析,提取我們需要的信息。
首先獲取電影的發布時間和海報的鍊接:
response = requests.get(url, headers=header)
text = response.content.decode('gbk')
html = etree.HTML(text)
movie = {}
time = html.xpath("//div[@class='co_content8']/ul//text()")[0].strip() # strip用來清除空格
movie['time'] = time
image = html.xpath("//div[@id='Zoom']//img/@src")[0]
movie['image'] = image
接下來就是獲取電影的名字,産地,導演等信息:
Zooms = html.xpath("//text()")
for index, info in enumerate(Zooms):
if info.startswith("◎年 代"):
info = info.replace("◎年 代", "").strip()
movie['info'] = info
elif info.startswith("◎主 演"):
actors = []
for x in range(index + 1, len(Zooms)):
actor = Zooms[x].strip()
# print(actor)
if actor.startswith("◎"):
break
actors.append(actor)
movie['actor'] = actors
print(movie)
最後就是我們的運行結果了(示例):
image.png
之後我們可以按照需求,将我們最終爬取到的詳細信息保存到或者是Mysql當中,這裡就不在演示怎麼保存了!好了,到這裡我們這個爬蟲小項目就算是完成了。
感興趣的朋友可以自己即嘗試一下,我們下期再見!
有話要說...