下面我来详细讲解“Python爬取豆瓣电影TOP250数据”的完整攻略。
一、准备工作
在开始爬取数据之前,我们需要安装一些必要的爬虫工具和模块,包括:
- Python3(建议使用Python3.6以上版本)
- requests(用于发送HTTP请求)
- lxml(用于解析HTML文档)
- BeautifulSoup(用于解析HTML文档)
你可以通过pip安装这些模块,如下所示:
pip install requests
pip install lxml
pip install BeautifulSoup4
二、分析页面结构
在开始爬取数据之前,我们需要先分析豆瓣电影TOP250页面的结构,找出我们需要获取的信息所在的位置。在本例中,我们需要获取每部电影的排名、名称、评分等信息。
可以通过在浏览器中查看网页源代码来分析页面结构,或者使用开发者工具辅助进行分析。
三、编写爬虫代码
在分析页面结构后,我们就可以开始编写爬虫代码了。这里提供两个示例代码,分别使用requests + lxml和requests + BeautifulSoup来爬取电影数据。
示例1:使用requests + lxml
import requests
from lxml import etree
url = 'https://movie.douban.com/top250'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
html = etree.HTML(response.text)
for item in html.xpath('//div[@class="item"]'):
rank = item.xpath('div[@class="pic"]/em/text()')[0]
title = item.xpath('div[@class="info"]/div[@class="hd"]/a/span[@class="title"]/text()')[0]
rating = item.xpath('div[@class="info"]/div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()')[0]
print(rank, title, rating)
解析:
- 首先,我们通过requests库发送HTTP请求,并使用lxml解析返回的HTML文档。
- 然后,我们使用XPath表达式来选择需要的节点。
- 最后,我们遍历每个电影节点,并获取需要的信息。
示例2:使用requests + BeautifulSoup
import requests
from bs4 import BeautifulSoup
url = 'https://movie.douban.com/top250'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
for item in soup.select('div.item'):
rank = item.select('div.pic em')[0].text
title = item.select('div.info div.hd a span.title')[0].text
rating = item.select('div.info div.bd div.star span.rating_num')[0].text
print(rank, title, rating)
解析:
- 首先,我们通过requests库发送HTTP请求,并使用BeautifulSoup解析返回的HTML文档。
- 然后,我们使用CSS选择器来选择需要的节点。
- 最后,我们遍历每个电影节点,并获取需要的信息。
四、总结
通过以上示例,我们可以学会如何使用Python爬取豆瓣电影TOP250数据。需要注意的是,虽然爬取网站数据是一项强大的工具,但是在使用时也必须遵循法律法规,合法合规地使用网络资源。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python爬取豆瓣电影TOP250数据 - Python技术站