我们讲过判断数据存储在哪里的方法。请你打开http://www.boohee.com/food/group/1网站,右击打开“检查”工具,并点击
Network
,然后刷新页面。点击第0个请求1
,看Response
。我们能在Response里找到食物的信息,说明我们想要的数据存在HTML里。
再看第0个请求1的headers,可以发现薄荷网的网页请求方式是get。
知道了请求方式是get,我们就知道可以用requests.get()获取数据。
找寻不同网页的规律
from gevent import monkeymonkey.patch_all()#让程序变为异步模式import gevent,requests,bs4,csvfrom gevent.queue import Queuefrom bs4 import BeautifulSoupimport timeimport csv# url_List=[]# for i in range(1,4):# for j in range(1,4):# url_List.append('http://www.boohee.com/food/group/' + str(i) + '?page=' + str(j))# for i in range(1,4):# url_List.append('http://www.boohee.com/food/vIEw_menu/?page='+str(j))# for url in url_List:# print(url)work=Queue()#创建队列对象,并赋值给work#前三个常见食物分类的前三页的食物网址的记录url_1='http://www.boohee.com/food/group/{type}?page={page}'for i in range(1,4): for j in range(1,4): url_1_real=url_1.format(type=i,page=j) work.put_Nowait(url_1_real)url_2='http://www.boohee.com/food/vIEw_menu/?page={page}'for i in range(1,4): url_2_real=url_2.format(page=i) work.put_Nowait(url_2_real)#print(work)def crawler(): headers={'User-Agent': 'Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'} #模拟浏览器头,防止反爬虫 while not work.empty(): url=work.get_Nowait() # print(url) res=requests.get(url,headers=headers) # print(res.text) #获取网页源代码 soup=BeautifulSoup(res.text,'HTML.parser') #用BeautifulSoup解析网页源代码 foods=soup.find_all('li',class_='item clearfix') for food in foods: food_name=food.find_all('a')[1]['Title'] # print(food_name) food_heat=food.find('p').text food_url = 'http://www.boohee.com' + food.find_all('a')[1]['href'] # print(food_heat) writer.writerow([food_name, food_heat, food_url]) # 借助writerow()函数,把提取到的数据:食物名称、食物热量、食物详情链接,写入csv文件。csv_file=open('boohee.csv','w',newline='')csv_file= open('boohee.csv', 'w', newline='')#调用open()函数打开csv文件,传入参数:文件名“boohee.csv”、写入模式“w”、newline=''。writer = csv.writer(csv_file)# 用csv.writer()函数创建一个writer对象。writer.writerow(['食物', '热量', '链接'])#借助writerow()函数往csv文件里写入文字:食物、热量、链接task_List=[]#创建5个爬虫for x in range(5): task=gevent.spawn(crawler) #创建任务 task_List.append(task) #添加任务队列start_time=time.time()gevent.joinall(task_List)end_time=time.time()print('time='+str(end_time-start_time))
总结 以上是内存溢出为你收集整理的Python 爬虫(10)全部内容,希望文章能够帮你解决Python 爬虫(10)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)