时隔几个月终于对_下厨房_下手咯!!!

下厨房-菜谱

  • 为何现在动手呢?
  • 主要库名
  • 思路
  • 完整的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()

觉得还可以 请点个哟

你可能感兴趣的:(Python爬虫,python,Python爬虫,xpath,数据解析,文件,IO,https)