用正则爬取豆瓣电影排行榜

import requests
import re
import chardet
url = "https://movie.douban.com/chart"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36','Cookie':'ll="118088"; bid=pEvZmYymg9w; __yadk_uid=MBVdmoWQpfuaAduWgI3sr27xdVb2SpxL; _vwo_uuid_v2=D48A302F0862238CF3F23ACA0683DA5FD|96bd09ebd9b5983c45ac0b80abdd5580; trc_cookie_storage=taboola%2520global%253Auser-id%3Daeb8d923-8e31-45ff-9a11-7a4a24c2fd2a-tuct46c9718; viewed="6898903"; gr_user_id=3ca08a9d-8af2-4ae5-b72c-1bd6343499e3; __utmc=30149280; __utmz=30149280.1569503137.3.3.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmc=223695111; __utmz=223695111.1569503137.2.2.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; acw_tc=276082a815695948946125465eed822b29faf81d8ad94d5cf0d821287a5f92; ap_v=0,6.0; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1569594896%2C%22https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D9Tr6b3hwv1bkFIt9iIEG9pjP2rKLHFpsgJYvz_JZ4P-gjFxDN7hKNDQUVT_-57rw%26wd%3D%26eqid%3D99624ff700502a24000000035d8cb79c%22%5D; _pk_id.100001.4cf6=0d8c49bca23e986a.1568892239.4.1569594896.1569541094.; __utma=30149280.1815959067.1568892238.1569541094.1569594896.5; __utma=223695111.1519397804.1568892239.1569541094.1569594896.4'}
response=requests.get(url,headers=headers,timeout=2)
response.encoding = chardet.detect(response.content)['encoding']

title = r'title="(.*?)">'
titles=re.findall(title,response.text,re.S)
urs=r'<a class="nbg" href="(.*?)"  title='
urls=re.findall(urs,response.text,re.S)
score=r'class="rating_nums">(.*?)</span>'
scores=re.findall(score,response.text,re.S)
content=re.compile(r'<p class="pl">(.*?)</p>',re.S)
contents=re.findall(content,response.text)
for i in range(0,11):
    print("片名:",titles[i])
    print("评分:",scores[i]) 
    print("详情:",contents[i])
    print("网址:",urls[i])

结果
结果

在PyCharm中使用正则表达式爬取豆瓣电影排行榜,通常需要分几步进行: 1. **安装必要的库**:首先你需要安装`requests`库来发送HTTP请求,以及`BeautifulSoup`或`re`库来进行HTML解析和正则匹配。 ```python pip install requests beautifulsoup4 ``` 2. **发送GET请求获取页面源码**: 使用`requests.get()`函数从豆瓣电影排行榜URL抓取网页内容,比如`https://movie.douban.com/top250`。 ```python import requests url = 'https://movie.douban.com/top250' response = requests.get(url) html_content = response.text ``` 3. **解析HTML**: 将返回的HTML字符串使用`BeautifulSoup`解析,如果只是简单提取信息,也可以直接用正则表达式。`BeautifulSoup`更方便处理复杂的HTML结构。 ```python from bs4 import BeautifulSoup soup = BeautifulSoup(html_content, 'lxml') ``` 4. **使用正则表达式查找目标数据**: 查找特定元素(如电影名、评分等),可以使用`re`模块中的函数,例如`findall()`。 ```python import re # 例如,假设我们想提取所有电影标题 titles_pattern = r'<span class="title">(.*?)</span>' titles = re.findall(titles_pattern, str(soup)) # 提取评分 ratings_pattern = r'<span class="rating_num">(\d+\.\d+)</span>' ratings = [float(score) for score in re.findall(ratings_pattern, str(soup))] ``` 5. **存储结果**: 最后将数据保存到文件或数据库,或者进一步分析和可视化。 记得在实际操作中遵守网站的robots.txt规则,并尊重版权。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值