/1 前言/

在放假时 ,经常想尝试一下自己做饭,下厨房这个网址是个不错的选择。

下厨房是必选的网址之一,主要提供各种美食做法以及烹饪技巧。包含种类很多。

今天教大家去爬取下厨房的菜谱 ,保存在world文档,方便日后制作自己的小菜谱。

/2 项目目标/

获取菜谱,并批量把菜 名、 原 料 、下 载 链 接 、下载保存在world文档。

/3 项目准备/

软件:PyCharm

需要的库:requestslxmlfake_useragent、time

网站如下:

https://www.xiachufang.com/explore/?page={}

点击下一页时,每增加一页page自增加1,用{}代替变换的变量,再用for循环遍历这网址,实现多个网址请求。

/4 反爬措施的处理/

主要有两个点需要注意:

1、直接使用requests库,在不设置任何header的情况下,网站直接不返回数据

2、同一个ip连续访问多次,直接封掉ip,起初我的ip就是这样被封掉的。

为了解决这两个问题,最后经过研究,使用以下方法,可以有效解决。

1)获取正常的 http请求头,并在requests请求时设置这些常规的http请求头。

2)使用 fake_useragent ,产生随机的UserAgent进行访问。

/5 项目实现/

1、定义一个class类继承object,定义init方法继承self,主函数main继承self。导入需要的库和网址,代码如下所示。

import requests
from lxml import etree
from fake_useragent import UserAgent
import timeclass  kitchen(object):def __init__(self):self.url = "https://www.xiachufang.com/explore/?page={}"def main(self):passif __name__ == '__main__':imageSpider =  kitchen()imageSpider.main()

2、随机产生UserAgent。

 for i in range(1, 50):self.headers = {'User-Agent': ua.random,}

3、发送请求  获取响应, 页面回调,方便下次请求。

def get_page(self, url):res = requests.get(url=url, headers=self.headers)html = res.content.decode("utf-8")return html

4、xpath解析一级页面数据,获取二级页面网址。

 def parse_page(self, html):parse_html = etree.HTML(html)image_src_list = parse_html.xpath('//li/div/a/@href')

5、for遍历,定义一个变量food_info保存,获取到二级页面对应的菜 名、 原 料 、下 载 链 接。

for i in image_src_list:url = "https://www.xiachufang.com/" + i# print(url)html1 = self.get_page(url)  # 第二个发生请求parse_html1 = etree.HTML(html1)# print(parse_html1)num = parse_html1.xpath('.//h2[@id="steps"]/text()')[0].strip()name = parse_html1.xpath('.//li[@class="container"]/p/text()')ingredients = parse_html1.xpath('.//td//a/text()')food_info = '''
第 %s 种菜 名 : %s
原 料 : %s
下 载 链 接 : %s,
=================================================================''' % (str(self.u), num, ingredients, url)

6、保存在world文档 。

 f = open('下厨房/菜谱.doc', 'a', encoding='utf-8')  # 以'w'方式打开文件f.write(str(food_info))f.close()

7、调用方法,实现功能。

html = self.get_page(url)
self.parse_page(html)

8、项目优化

1)方法一:设置时间延时。

 time.sleep(1.4)

2)方法二:定义一个变量u,for遍历,表示爬取的是第几种食物。(更清晰可观)。

u = 0
self.u += 1;

/6 效果展示/

1、点击绿色小三角运行输入起始页,终止页。

2、运行程序后,结果显示在控制台,如下图所示。

3、将运行结果保存在world文档中,如下图所示。

4、双击文件,内容如下图所示。

/7 小结/

1、本文章基于Python网络爬虫,获取下厨房网站菜谱信息,在应用中出现的难点和重点,以及如何防止反爬,做出了相对于的解决方案。

2、介绍了如何去拼接字符串,以及列表如何进行类型的转换。

3、代码很简单,希望能够帮到你。

4、欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

5、可以选择自己喜欢的分类,获取自己喜欢的菜谱,每个人都是厨师。

本文源码:

https://github.com/cassieeric/python_crawler/tree/master/Kitchen,觉得不错,给个star~

●3分钟画出酷炫动态地图的秘诀!

●用Python玩连连看是什么效果?画面太美

后台回复“入群”即可入群交流数据干货

手把手教你使用Python网络爬虫获取菜谱信息相关推荐

  1. 手把手教你使用Python网络爬虫获取音效信息

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 一腔热血勤珍重,洒去犹能化碧涛. ...

  2. 手把手教你使用Python网络爬虫获取招聘信息

    1.前言 现在在疫情阶段,想找一份不错的工作变得更为困难,很多人会选择去网上看招聘信息.可是招聘信息有一些是错综复杂的.而且不能把全部的信息全部罗列出来,以外卖的58招聘网站来看,资料整理的不清晰. ...

  3. 手把手教你使用Python网络爬虫获取B站视频选集内容(附源码)

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 位卑未敢忘忧国,事定犹须待阖棺. ...

  4. 手把手教你利用Python网络爬虫获取链家网的房产信息

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 夜阑卧听风吹雨,铁马冰河入梦来. ...

  5. 手把手教你使用Python网络爬虫获取王者荣耀英雄皮肤

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 欢度国庆,共度中秋. /1 前言/ ...

  6. 手把手教你用Python网络爬虫获取壁纸图片

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 桃之夭夭,灼灼其华. /1 前言/ ...

  7. 实战|手把手教你利用Python网络爬虫获取新房数据

    一.项目背景 大家好,我是J哥. 新房数据,对于房地产置业者来说是买房的重要参考依据,对于房地产开发商来说,也是分析竞争对手项目的绝佳途径,对于房地产代理来说,是踩盘前的重要准备. 今天J哥以惠民之家 ...

  8. python爬虫可以爬取个人信息吗_手把手教你利用Python网络爬虫获取旅游景点信息...

    爬虫系列: 当我们出去旅游时,会看这个地方有哪些旅游景点,景点价格.开放时间.用户的评论等. 本文基于Python网络爬虫技术,以hao123旅游网为例,获取旅游景点信息. 1.项目目标 获取网站的景 ...

  9. python链家网爬虫_手把手教你利用Python网络爬虫获取链家网的房产信息

    点击上方" Python爬虫与数据挖掘 ",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 夜阑卧听风吹雨,铁马冰河入梦来 ...

最新文章

  1. JNDI 笔记(一) 概述
  2. linux c语言文件拷贝_linux - scp命令远程文件拷贝
  3. power shell远程_PowerShell入门教程之远程操作运行PowerShell的方法
  4. java重入锁_java并发编程:可重入锁是什么?
  5. ubuntu安装vmware 64位
  6. Windows结束某个端口的进程
  7. IDA for Linux/Mac/Windows
  8. Nginx 这一牛X的功能,你知道吗
  9. 小学生计算机考试软件,中小学生准考证制作打印软件
  10. 采用数字电位器来调整DC-DC的输出
  11. 一个在线的文件密码破解网站( rar文件、zip文件、pdf文件、ppt文件、xls文件)
  12. 图片Exif信息解析(Java实现)
  13. 举头望明月打计算机术语,与月亮有关的谜语
  14. 微信小程序之文件上传PHP后台接收
  15. Java面试题总结-2022版
  16. Learned-Mixin +H(LMH)
  17. Kali安装openVAS (GVM)
  18. 计算机教师师徒结对协议,学期信息技术师徒结对总结
  19. 华为云CDN加速,让你告别网速慢的烦恼
  20. ONIE-sonic内核调试

热门文章

  1. 写给想成为前端工程师的同学们 ―前端工程师是做什么的?
  2. 使用nitro快速搭建js服务器
  3. core dump 分析
  4. linux禁止rm运行,禁用rm命令,使用mv命令给linux建立回收站
  5. 小学计算机课教案模板,小学计算机备课教案模板.doc
  6. Windows安装启动logstash
  7. 20分钟,使用Amazon SageMaker快速搭建属于自己的AIGC应用
  8. 孕期服务器声音影响,噪声对孕妇和胎儿的影响这么大,你竟然不知道?
  9. catia 创成钣金设计_CATIA创成式钣金设计(GSD)基础
  10. 程序员的快乐往往就是这么朴素无华且枯燥!