用lxml爬取豆瓣电影
时间: 2023-12-18 12:04:15 浏览: 29
好的,以下是使用lxml解析库爬取豆瓣电影Top250的示例代码:
```python
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 = response.text
tree = etree.HTML(html)
movies = tree.xpath('//ol[@class="grid_view"]/li')
for movie in movies:
title = movie.xpath('.//span[@class="title"]/text()')[0]
score = movie.xpath('.//span[@class="rating_num"]/text()')[0]
print(title, score)
```
这段代码与前面的示例代码相似,使用lxml库来解析HTML页面。它将爬取豆瓣电影Top250的电影标题和评分,并将它们打印出来。您也可以根据自己的需求进行修改和定制。请确保您已安装好requests和lxml库。
相关问题
使用xpath爬取豆瓣电影
可以使用Python的第三方库requests和lxml来实现对豆瓣电影网站进行爬取,并使用xpath来提取所需的信息。
首先,我们需要安装requests和lxml库。可以使用以下命令进行安装:
```
pip install requests
pip install lxml
```
接下来,我们使用requests库向豆瓣电影网站发送请求,获取网页的HTML源代码:
```python
import requests
url = 'https://movie.douban.com/top250'
response = requests.get(url)
html = response.text
```
然后,我们使用lxml库中的etree模块解析HTML源代码,并使用xpath来提取所需的信息。例如,我们可以提取电影名称、导演、主演、评分等信息:
```python
from lxml import etree
# 解析HTML源代码
tree = etree.HTML(html)
# 提取电影信息
movies = tree.xpath('//ol[@class="grid_view"]/li')
for movie in movies:
title = movie.xpath('.//span[@class="title"]/text()')[0]
director = movie.xpath('.//div[@class="bd"]/p/text()')[0].split('/')[0]
actors = movie.xpath('.//div[@class="bd"]/p/text()')[0].split('/')[1:]
actors = [actor.strip() for actor in actors]
rating = movie.xpath('.//span[@class="rating_num"]/text()')[0]
print(title, director, actors, rating)
```
这样,我们就可以成功爬取豆瓣电影网站上的电影信息了。当然,在实际应用中,还需要注意反爬虫机制等问题。
BeautifulSoup爬取豆瓣电影票房
本文将介绍如何使用Python的BeautifulSoup库爬取豆瓣电影票房信息。
首先,我们需要打开豆瓣电影票房页面,例如:https://movie.douban.com/chart。然后,我们可以使用Python的requests库获取页面内容:
```python
import requests
url = 'https://movie.douban.com/chart'
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_content = response.text
```
接下来,我们可以使用BeautifulSoup库解析页面内容:
```python
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_content, 'lxml')
# 找到票房榜的列表
table = soup.find('table', class_='chart')
# 找到列表中的所有电影
movies = table.find_all('tr')[1:]
# 遍历电影列表,提取电影信息
for movie in movies:
rank = movie.find('td', class_='rank').text.strip() # 排名
title = movie.find('td', class_='title').a.text.strip() # 电影名
cast = movie.find('td', class_='cast').text.strip() # 主演
box_office = movie.find('td', class_='box-office').text.strip() # 票房
print(rank, title, cast, box_office)
```
运行上述代码,即可输出豆瓣电影票房榜的电影信息。