用Python语言,运用正则表达式编写代码,爬取“豆瓣电影 Top 250”页面(共10页)中的电影名和精选短评
时间: 2023-06-09 21:05:16 浏览: 76
好的,以下是爬取“豆瓣电影 Top 250”页面中的电影名和精选短评的Python代码:
```python
import re
import requests
for i in range(0, 10):
url = 'https://movie.douban.com/top250?start=' + str(i * 25) + '&filter='
res = requests.get(url)
res.encoding = 'utf-8'
html = res.text
pattern = re.compile('class="title">(.*?)</span>.*?class="quote".*?span>(.*?)</span>', re.S)
items = re.findall(pattern, html)
for item in items:
movie_name = item[0].replace(" ", " ")
short_comment = item[1].strip()
print(movie_name + '\n' + short_comment + '\n')
```
这段代码利用了requests库来发送请求,然后通过正则表达式匹配页面内容,提取出需要的电影名和精选短评,并将结果输出到控制台。
相关问题
用python的requests和xpath和正则表达式爬取豆瓣电影top250详情页的代码
以下是用Python的requests和xpath和正则表达式爬取豆瓣电影top250详情页的代码:
```python
import requests
from lxml import etree
import re
def get_movie_details(url):
# 发送请求获取页面内容
response = requests.get(url)
html = response.content.decode('utf-8')
# 解析页面内容
selector = etree.HTML(html)
# 获取电影名称
movie_name = selector.xpath('//h1/span/text()')[0]
# 获取导演和主演信息
director_and_cast = selector.xpath('//div[@id="info"]/span[1]/span[@class="attrs"]/a/text()')
director = director_and_cast[0]
cast = director_and_cast[1:]
# 获取上映年份、地区、类型
year_country_type = selector.xpath('//div[@id="info"]/text()')
year = re.findall('\d{4}', year_country_type[1])[0]
country = year_country_type[2].strip().split('/')[0]
type = year_country_type[2].strip().split('/')[-1]
# 获取评分和评价人数
rating = selector.xpath('//strong[@class="ll rating_num"]/text()')[0]
rating_num = selector.xpath('//div[@class="rating_sum"]/a/span/text()')[0]
# 获取电影简介
summary = selector.xpath('//div[@class="indent"]/span[@class="all hidden"]/text()')[0]
# 构造电影信息字典
movie_info = {
'名称': movie_name,
'导演': director,
'主演': cast,
'年份': year,
'地区': country,
'类型': type,
'评分': rating,
'评价人数': rating_num,
'简介': summary.strip(),
}
return movie_info
if __name__ == '__main__':
urls = ['https://movie.douban.com/top250?start={}'.format(i) for i in range(0, 250, 25)]
for url in urls:
response = requests.get(url)
html = response.content.decode('utf-8')
selector = etree.HTML(html)
# 获取电影详情页链接
movie_links = selector.xpath('//div[@class="hd"]/a/@href')
for link in movie_links:
movie_info = get_movie_details(link)
print(movie_info)
```
这段代码会爬取豆瓣电影top250列表页面中每部电影的详情页,并从详情页中提取电影名称、导演和主演、上映年份、地区、类型、评分、评价人数、电影简介等信息,并打印出来。
用requests库和正则表达式爬取豆瓣电影top250数据完整代码
在Python中,我们可以使用`requests`库来发送HTTP请求获取网页内容,然后通过`re`(正则表达式)模块来解析和提取所需的数据。下面是一个简单的示例,展示如何爬取豆瓣电影Top250的电影标题和链接:
```python
import requests
from bs4 import BeautifulSoup
import re
# 请求URL
url = "https://movie.douban.com/top250"
# 发送GET请求
response = requests.get(url)
# 检查请求是否成功
if response.status_code == 200:
# 解析HTML内容
soup = BeautifulSoup(response.text, 'lxml')
# 找到电影列表部分
movie_list = soup.select('.item')
# 提取电影信息(这里假设每个电影信息包含标题和链接)
movies_data = []
for movie in movie_list:
title_element = movie.find('span', {'class': 'title'})
link_element = movie.find('a', href=True)
title = title_element.text.strip() if title_element else ''
link = link_element['href'] if link_element else ''
movies_data.append({
'title': title,
'link': link
})
# 输出或保存数据
for movie in movies_data:
print(f"电影标题: {movie['title']}")
print(f"链接: {movie['link']}\n")
else:
print("请求失败,状态码:", response.status_code)
阅读全文