欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

爬虫学习2--使用requests、bs4以及csv爬取保存网页信息

时间:2023-05-19

文章所有知识基本来自个人的学习整理

目录

准备工作

代码

结果展示


准备工作

准备好我们需要的库以及我们要爬取的网页url等基本信息

pip install requestspip install bs4

代码

本次演示我们选择了山东省菜价,来源于网络

读取多个页面数据时,可能会出现下面

AttributeError: 'NoneType' object has no attribute 'find_all' 的错误,我查阅了别人所说的解决办法,加了请求头headers之后还会出现的话,有可能是因为访问网站的时候出现了下面的验证情况

import requestsfrom bs4 import BeautifulSoupimport csvf=open('菜价.csv',mode='w')csvwriter=csv.writer(f)#通过观察url我们可以发现,翻页时url的变化与页码相符合,因此通过for循环可以同时爬取多页数据for i in range(3):url='https://www.cnhnb.com/hangqing/cdlist-2003192-0-0-0-0-'+str(i)+'/'r=requests.get(url,verify=False,headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'})r.encoding='utf-8'tt=r.text#获取需要的源代码page=BeautifulSoup(tt,'html.parser')content=page.find('div',attrs={'class':"quotation-content"})samples=content.find_all('li',attrs={'class':"market-list-item"})#使用attrs,避免使用class产生关键字冲突for sample in samples:s=sample.find_all('span')date=s[0].text#这是html中的内容,用于获取标签里面的内容product=s[1].textplace=s[2].textprice=s[3].textkeep=s[4].textcsvwriter.writerow([date,product,place,price,keep])f.close()print('over!!')r.close()#最后关闭请求

结果展示

 

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。