爲何現在動手呢?
說來話長,由於本人不怎麼會做菜,基本也不做菜,所以遲遲沒去看,純屬練練手沒別的意思
有做菜需求,或是喜歡做菜的朋友,請用瀏覽器訪問 下廚房. 請支持正版
主要庫名
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()
覺得還可以 請點個👍喲