下厨房-菜谱

  • ​​为何现在动手呢?​​
  • ​​主要库名​​
  • ​​思路​​
  • ​​完整的python代码​​

为何现在动手呢?

  说来话长,由于本人不怎么会做菜,基本也不做菜,所以迟迟没去看,纯属练练手没别的意思
  有做菜需求,或是喜欢做菜的朋友,请用浏览器访问 ​下厨房. 请支持正版

主要库名

​requests​​​​lxml​​​​fake_useragent​

思路

二次解析

下面奉上完成代码 ps:不要随便使用,以免对他人和自己造成困扰

完整的python代码

# -*- coding: utf-8 -*-
"""
@Time : 2020/6
@File : XiaChuFang.py
@Software: PyCharm
"""
import os
import requests
from lxml import etree
from fake_useragent import UserAgent
import time


class kitchen(object):
u = 0

def __init__(self):
self.url = "https://www.xiachufang.com/explore/?page={}"

# 使用 UserAgent 库 生成不同的 请求头 ‘User-Agent’
ua = UserAgent(verify_ssl=False)
for i in range(1, 50):
self.headers = {
'User-Agent': ua.random,
}

def get_page(self, url):
"""
发送请求 获取响应
:param url:
:return:
"""
res = requests.get(url=url, headers=self.headers)
html = res.content.decode("utf-8")
return html

def parse_page(self, html):
"""
解析数据
:param html:
:return:
"""
parse_html = etree.HTML(html)
image_src_list = parse_html.xpath('//li/div/a/@href')
for i in image_src_list:
url = "https://www.xiachufang.com/" + i

html1 = self.get_page(url) # 对具体链接发起请求
parse_html1 = etree.HTML(html1)

num = parse_html1.xpath('.//h2[@id="steps"]/text()')[0].strip()
ingredients = parse_html1.xpath('.//td//a/text()')
self.u += 1
food_info = '''
第 %s 种

菜 名 : %s
原 料 : %s
下 载 链 接 : %s
=================================================================
''' % (str(self.u), num, ingredients, url)

# 判断 下厨房菜谱.doc 文件是否存在 不存在则创建
filename = "./下厨房菜谱.doc"
if not os.path.exists(filename):
os.system(r"cd.>{}".format(filename))

f = open('./下厨房菜谱.doc', 'a', encoding='utf-8')
f.write(str(food_info))
print(str(food_info))
f.close()

def main(self):
start_page = int(input("起始页:"))
end_page = int(input("终止页:"))
for page in range(start_page, end_page + 1):
url = self.url.format(page)
html = self.get_page(url)
self.parse_page(html)
time.sleep(1.4)
print("====================================第 %s 页 爬 取 成 功====================================" % page)


if __name__ == '__main__':
imageSpider = kitchen()
imageSpider.main()

觉得还可以 请点个👍哟