实现一个简单的网络爬虫,爬取静态页面数据

449次阅读
没有评论

以豆瓣电影为例,爬取《后来的我们》的影评。

找到影评页面
实现一个简单的网络爬虫,爬取静态页面数据
找到链接:https://movie.douban.com/subject/26683723/comments?status=P
右键—-点击检查
实现一个简单的网络爬虫,爬取静态页面数据
发现影评都是写在span标签里面,class为short
实现一个简单的网络爬虫,爬取静态页面数据
代码如下

# 需要调用的requests 库和 BeautifulSoup库中的bs4工具 import requests from bs4 import BeautifulSoup

num = 0 # 定义条数的初始值 # 定义一个变量url,为需要爬取数据我网页网址 url = 'https://movie.douban.com/subject/26683723/comments?status=P' # 获取这个网页的源代码,存放在req中,{}中为不同浏览器的不同UserAgent属性,针对不同浏览器可以自行百度 req = requests.get(url, {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}) # 生成一个Beautifulsoup对象,用以后边的查找工作 soup = BeautifulSoup(req.text, 'lxml') # 找到所有span标签中的内容并存放在xml这样一个类似于数组队列的对象中 xml = soup.find_all('span', class_='short') # 利用循环将xml[]中存放的每一条打印出来

for i in range(len(xml)): # 表示从0到xml的len()长度 msg = xml[i].string if not msg is None: num += 1 print('第', num, '条', msg)

实现一个简单的网络爬虫,爬取静态页面数据
爬虫牛逼!!

我们发现,为什么只能爬取到20条评论?不能翻页查询吗?

找到第一页:
https://movie.douban.com/subject/26683723/comments?status=P
第二页:
https://movie.douban.com/subject/26683723/comments?start=20&limit=20&sort=new_score&status=P
第三页:
https://movie.douban.com/subject/26683723/comments?start=40&limit=20&sort=new_score&status=P
第…页:

发现规律:只有start= 后面的数字不同,都是20的倍数,原因是因为一页的影评只有20条。

代码修改如下:

# 需要调用的requests 库和 BeautifulSoup库中的bs4工具 import requests from bs4 import BeautifulSoup import time

num = 0 # 定义条数的初始值 # 通过循环实现对不同页码的网页的数据爬取 for page in range(10): # 以10页为例 time.sleep(1) # 延时1秒 value = page * 20 # 考虑到start=后边的都是20的整倍数 # 定义一个变量url,为需要爬取数据我网页网址(要将url由'https://movie.douban.com/subject/26683723/comments?status=P'换成'https://movie.douban.com/subject/26683723/comments?start=0&limit=20&sort=new_score&status=P&percent_type=') # 利用Python中字符串替换的方法:在要替换的地方用%s代替,在语句后%+要替换的内容 url = 'https://movie.douban.com/subject/26683723/comments?start=%s&limit=20&sort=new_score&status=P&percent_type=' % str(value) # str转型 # 获取这个网页的源代码,存放在req中,{}中为不同浏览器的不同UserAgent属性,针对不同浏览器可以自行百度 req = requests.get(url, {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}) # 生成一个Beautifulsoup对象,用以后边的查找工作 soup = BeautifulSoup(req.text, 'lxml') # 找到所有span标签中的内容并存放在xml这样一个类似于数组队列的对象中 xml = soup.find_all('span', class_='short') # 利用循环将xml[]中存放的每一条打印出来

for i in range(len(xml)): # 表示从0到xml的len()长度 msg = xml[i].string if not msg is None: num += 1 print('第', num, '条', msg)

效果:
实现一个简单的网络爬虫,爬取静态页面数据

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-10-24发表,共计2265字。
新手QQ群:570568346,欢迎进群讨论 Python51学习