Python 爬虫(10)

Python 爬虫(10),第1张

概述多协程实践打开网址,查看所要获取的信息的存取地方我们讲过判断数据存储在哪里的方法。请你打开http://www.boohee.com/food/group/1网站,右击打开“检查”工具,并点击Network,然后刷新页面。点击第0个请求1,看Response。我们能在Response里找到食物的信息,说明我们想要的数据 多协程实践


打开网址,查看所要获取的信息的存取地方
我们讲过判断数据存储在哪里的方法。请你打开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)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1186393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存