下面是详细讲解 Python 爬虫爬取爱奇艺电影片库首页的实例代码的完整攻略。
准备工作
在开始爬取之前,需要安装 requests
库和 lxml
库。可以使用以下命令进行安装:
pip install requests lxml
获取页面内容
首先,需要确定要爬取的目标网页。在本例中,目标网页为爱奇艺电影片库首页。
使用 requests
库可以发送网络请求并获取网页的 HTML 内容。以下是示例代码:
import requests
url = "https://www.iqiyi.com/dianying/"
response = requests.get(url)
content = response.content
print(content)
在这个示例中,使用 requests
库向指定的链接发送网络请求,然后使用 content
属性获取页面的 HTML 内容。
解析 HTML 标签
获取页面的 HTML 内容之后,接下来需要对页面内容进行解析。在本例中,使用 lxml
库对 HTML 内容进行解析。
以下是示例代码:
from lxml import etree
tree = etree.HTML(content)
print(tree)
使用 lxml
库中的 etree.HTML()
函数可以将 HTML 内容转换为 etree
实例对象,方便对 HTML 标签进行操作。
获取电影列表
获取页面内容并进行解析之后,可以通过 XPath 语法获取页面中的电影列表。示例代码如下:
movies = tree.xpath('//div[@id="content"]/div[@class="wrapper-piclist"]
/ul[@class="site-piclist site-piclist-180236"]/li')
for movie in movies:
title = movie.xpath('.//a[@class="site-piclist_pic_link"]/img/@title')[0]
cover = movie.xpath('.//a[@class="site-piclist_pic_link"]/img/@src')[0]
print(title, cover)
在这个示例中,使用 XPath 语法获取电影列表的标签元素,然后遍历标签元素,获取每个电影的标题和封面图片链接。
另外,为了方便获取每个电影的详细信息,可以将每个电影对应的标签元素存储到一个列表中,示例代码如下:
movie_list = []
for movie in movies:
movie_info = {}
movie_info['title'] = movie.xpath('.//a[@class="site-piclist_pic_link"]/img/@title')[0]
movie_info['cover'] = movie.xpath('.//a[@class="site-piclist_pic_link"]/img/@src')[0]
movie_list.append(movie_info)
print(movie_list)
使用字典存储每个电影的标题和封面图片链接,再将字典存储到列表中,方便对每个电影的信息进行统一处理。
获取电影详细信息
获取到每个电影的详细信息需要发送多个网络请求,重复上述的内容获取页面 HTML 内容并解析的过程,为了简化代码,可以使用函数进行封装。
以下是示例代码:
def get_movie_detail(url):
response = requests.get(url)
content = response.content
tree = etree.HTML(content)
title = tree.xpath('//div[@class="movie-title"]/h1/text()')[0]
score = tree.xpath('//div[@class="score"]/span[@class="score-num"]/text()')[0]
desc = tree.xpath('//div[@class="episodeIntro-Panel"]/div[@class="episodeIntro"]/p/text()')[0]
return {'title': title, 'score': score, 'desc': desc}
for movie in movie_list:
detail_url = "https:" + movie['detail_url']
movie.update(get_movie_detail(detail_url))
print(movie_list)
在这个示例中,使用 update()
方法将每个电影的详细信息添加到电影字典中,最终输出所有电影的详细信息。
示例说明
在上述示例中,首先获取了爱奇艺电影片库首页的 HTML 内容,并使用 lxml
库进行解析。接着使用 XPath 语法获取电影列表,将每个电影的标题和封面图片链接存储到列表中。最后,重复发送多个网络请求获取每个电影的详情信息。
在实际的开发过程中,还需要注意网页请求过快可能会给网站造成过大的压力和影响,应该合理控制爬取频率,并尽可能地使用代理 IP 和请求头等方式实现匿名爬取。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python爬虫爬取爱奇艺电影片库首页的实例代码 - Python技术站