爬取目标网页,网址:https://movie.douban.com/subject/26683723/comments?status=P
在检查窗口移动鼠标,放在不同的代码段上,网页上就会有不同的区域被选中,经过不断查找,存放影评的文字都存放在<p class=""> </p>标签当中
#需要调用的requests 库和 BeautifulSoup库中的bs4工具 import requests from bs4 import BeautifulSoup num=0#定义条数的初始值 #定义一个变量url,为需要爬取数据我网页网址 url = 'https://movie.douban.com/subject/26683723/comments?status=P' #获取这个网页的源代码,存放在req中 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') xml = soup.find_all('p',class_='') for i in range(len(xml)): msg = xml[i].string if not msg is None: num += 1 print('第', num, '条', msg)
运行结果
找到每页之间的联系。
对比发现:它们的区别在于start=后边的数字不同,都是20的整倍数(原因是每页都只有20条影评)
所以只要实现start=后边的字符串的改变,即可实现对不同页面进行爬取。
#需要调用的requests 库和 BeautifulSoup库中的bs4工具 import requests from bs4 import BeautifulSoup num=0#定义条数的初始值 #通过循环实现对不同页码的网页的数据爬取 for page in range(10): value = page * 20 #定义一个变量url url = 'https://movie.douban.com/subject/26683723/comments?start=%s&limit=20&sort=new_score&status=P&percent_type=' %str(value)#str转型 #获取这个网页的源代码 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') xml = soup.find_all('p',class_='') for i in range(len(xml)): msg = xml[i].string if not msg is None: num += 1 print('第', num, '条', msg)
运行结果
主要有以下步骤:先找到目标网页,分析网页源码,确定所需数据的位置,编写Python代码,调用Python强大的工具就可以实现了。