【爬虫】一次爬取某瓣top电影前250的学习记录

本文介绍了如何使用Python的requests和re库实现对豆瓣电影Top250页面的爬取,包括设置伪造的User-Agent以应对反爬机制,以及使用正则表达式提取电影名称。

先贴上爬取的脚本:

import requests

import re

for i in range(1,11):

    num=(i-1)*25

    url=f"https://movie.douban.com/top250?start={num}&filter="

    head={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"}#伪造请求头

    res=requests.get(url,headers=head)

    #print(res.text)

    format=re.compile(r'<div class="item">.*?<span class="title">(?P<name>.*?)</span>',re.S)

    data=format.finditer(res.text)

    for i in data:

        dic=i.groupdict()

        print(dic)

首先导入requests库,主要是对网站发起请求

然后就是re库,主要是在python中能够使用正则表达式匹配

url=f"https://movie.douban.com/top250?start={num}&filter="

这边url中加上f是为了能识别num变量,主要是为了能识别多个网页

head={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"}

修改请求头,因为某瓣有反爬机制,不修改的,该请求头默认为python的标识,修改的请求头可在f12的netword数据中获取

该请求头随意修改就行,合理就行

 format=re.compile(r'<div class="item">.*?<span class="title">(?P<name>.*?)</span>',re.S)

这里是re的compile函数,可以写正则表达式为后续使用,re.S是为了匹配到换行符,因为.*?中的.是没办法匹配到换行符的,?P<name>,是将匹配到的数据存到name分组中

data=format.finditer(res.text)

进行正则匹配,finditer将匹配的数据存入迭代器,方便后面for循环

  for i in data:

        dic=i.groupdict()

        print(dic)

 这里的groupdict是将分组数据提取出来,是以字典的形式

测试结果如下:

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值