爬取豆瓣电影排名代码

本文分享了使用Python的urllib.request模块爬取豆瓣电影排行榜的详细代码,演示了如何发送HTTP请求、解析JSON响应及正则表达式提取电影名称与评分的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

urllib.request爬取电影排名,复制以下代码可以直接执行:

-- coding:utf-8 --

import urllib
import urllib.request
import time
import json
import re

url = “https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action

headers = {“User-Agent” : “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36”}

formdata = {
“start”:“0”,
“limit”:“20”
}

data = urllib.parse.urlencode(formdata).encode(“utf-8”)

request = urllib.request.Request(url, data = data, headers = headers)

dd=urllib.request.urlopen(request).read()

s=dd.decode(‘utf-8’) #bytes转普通字符串

#print(s)

data2=json.loads(s) #将json字符串转换成python对象,在这里转换成了list

print(data2[0][“title”])

#“rating”:[“9.6”,“50”]
#“title”:“肖申克的救赎”,

pattern1=re.compile(r’“rating”:["(.?)","\d+"]’,re.I) #获取电影得分
pattern2=re.compile(r’“title”:"(.
?)"’,re.I) #获取电影名字

data1=pattern1.findall(s)
data2=pattern2.findall(s)

for x in range(len(data1)):
print(“排名:”+str(x+1)+“电影名:”,data2[x],“豆瓣得分:”+data1[x])

### 如何用 Python 爬取豆瓣电影排名数据 要实现爬取豆瓣电影 Top250 的排名数据,可以按照以下方法完成。此过程涉及网络请求库 `requests` 和解析工具 `lxml` 来提取网页中的结构化信息。 #### 安装依赖库 在开始之前,需要确保已安装必要的 Python 库: ```bash pip install requests lxml ``` 这些命令会帮助安装所需的模块来发送 HTTP 请求并解析 HTML 文档[^2]。 #### 编写爬虫代码 以下是完整的 Python 脚本示例: ```python import requests from lxml import etree def fetch_douban_top250(): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } base_url = "https://movie.douban.com/top250" movies = [] for start in range(0, 250, 25): # 分页处理 url = f"{base_url}?start={start}" response = requests.get(url, headers=headers) if response.status_code != 200: print(f"Failed to retrieve data from {url}") continue html = etree.HTML(response.text) titles = html.xpath('//div[@class="hd"]/a/span[1]/text()') # 获取电影名称 ratings = html.xpath('//span[@class="rating_num"]/text()') # 获取评分 quotes = html.xpath('//p[@class="quote"]/span/text()') # 获取经典台词(如果存在) for i in range(len(titles)): movie_info = { 'title': titles[i], 'rating': float(ratings[i]), 'quote': quotes[i] if i < len(quotes) else None, } movies.append(movie_info) return movies if __name__ == "__main__": top_movies = fetch_douban_top250() for idx, movie in enumerate(top_movies[:10], 1): # 打印前10部电影的信息 print(f"{idx}. Title: {movie['title']}, Rating: {movie['rating']}, Quote: {movie['quote']}") ``` 上述脚本实现了分页抓取功能,并利用 XPath 表达式定位目标字段的内容。它能够获取每部电影的名字、评分以及可能存在的经典台词[^1]。 #### 注意事项 由于反爬机制的存在,在实际操作过程中可能会遇到 IP 封禁等问题。因此建议适当降低访问频率或者设置代理池以规避风险。此外,应当遵循网站的服务条款,合法合理地使用公开数据资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值