PY爬虫 | 爬取下厨房的本周最受欢迎

# CY3761 | 2021-10-27 20:03

# 爬取下厨房的本周最受欢迎-列表数据
import base64
import os.path
from urllib import request  # 下载图片

import openpyxl
from openpyxl.worksheet.hyperlink import Hyperlink  # 插入链接
from openpyxl.drawing.image import Image  # 插入图片
from pyquery import PyQuery as pq

url = 'https://www.xiachufang.com/explore'  # 需要头信息 否则 404
headers = {
    'User-Agent': ('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                   'Chrome/95.0.4638.54 Safari/537.36')
}
sep = '/'
urlSame = url.split(sep)
urlSame.pop()
urlSame = sep.join(urlSame)

# print(urlSame)

pqa = pq(url=url, encoding='utf-8', headers=headers)
pqb = pqa('.normal-recipe-list li > div')

items = []

path = '下厨房的本周最受欢迎'

if not os.path.exists(path):
    os.makedirs(path)

for k, _ in enumerate(pqb):
    _ = pq(_)
    _src = _('img').attr('data-src')
    _href = urlSame + _('a').attr('href')
    _name = _('p.name a').text()
    _meta = _('p.ing').text()
    _author = _('p.author a').text()
    
    # print(_src, _href, sep='\n')
    # print(_name, _author)
    # print(_meta)
    
    # 保存图片
    """"""
    k = str(k).zfill(2)
    _imgPath = os.getcwd() + '/' + path + '/' + k + '.jpg'
    
    _imgResp = request.urlopen(request.Request(_src))
    _content = _imgResp.read()
    
    if _content:
    
        with open(_imgPath, 'wb') as f:
            f.write(_content)
    
    items.append((_imgPath, _href, _name, _meta, _author))

# print(pqa.html())

# 创建工作表
ow = openpyxl.Workbook()
sheet = ow.active
sheet.title = path

for _ in items:
    sheet.append(['图片', _[0]])  # 1
    sheet.append(['菜名', _[2]])  # 2
    sheet.append(['作者', _[4]])  # 3
    sheet.append(['材料', _[3]])  # 4
    sheet.append(['链接', _[1]])  # 5
    
    sheet.append([])  # 6

for _ in sheet['B']:
    col = chr(_.column + 64)
    row = str(_.row)
    
    if _.row % 6 == 1:  # 图片
        img = Image(_.value)
        size = 0.50  # 图片缩放
        img.width = img.width * size
        img.height = img.height * size
        # 单元格缩放
        sheet.column_dimensions[col].width = img.width
        sheet.row_dimensions[int(row)].height = img.height  # 注意这里不能字符串 否则报错
        
        # print(_.value)
        # print(chr(_.column + 64) + ' ' + str(_.row))
        sheet.add_image(img, col + row)
        _.value = ''
    if _.row % 6 == 5:  # 链接
        _.value = '=HYPERLINK("' + _.value + '","点击访问")'

ow.save('下厨房的本周最受欢迎.xlsx')
ow.close()

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是使用Scrapy框架实现的豆瓣图书爬虫,可以获取最受关注图书榜中的书名和作者: 1. 首先,需要安装Scrapy框架,可以使用以下命令进行安装: ``` pip install scrapy ``` 2. 创建一个新的Scrapy项目,可以使用以下命令: ``` scrapy startproject douban_book ``` 3. 进入到项目目录中,修改settings.py文件,添加以下配置: ``` USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' ROBOTSTXT_OBEY = False ``` 这里设置了User-Agent,避免被反爬虫机制识别,同时关闭了ROBOTSTXT_OBEY,不遵守robots.txt文件中的规则。 4. 创建一个新的Spider,可以使用以下命令: ``` scrapy genspider douban_book_spider book.douban.com ``` 这个命令会在spiders目录下创建一个新的Spider文件,名称为douban_book_spider.py。 5. 修改douban_book_spider.py文件,将代码替换为以下内容: ```python import scrapy from scrapy.selector import Selector from douban_book.items import DoubanBookItem class DoubanBookSpider(scrapy.Spider): name = "douban_book" allowed_domains = ["book.douban.com"] start_urls = [ "https://book.douban.com/chart?subcat=F&icn=index-topchart-fiction" ] def parse(self, response): book_list = Selector(response).xpath('//div[@class="pl2"]') for book in book_list: item = DoubanBookItem() item['book_name'] = book.xpath('a/@title').extract_first().strip() item['author'] = book.xpath('p[@class="pl"]/text()').extract_first().strip().split('/')[0] yield item ``` 这个Spider会访问豆瓣图书最受关注图书榜中的小说类图书页面,获取每本书的书名和作者,并将结果保存到DoubanBookItem中。 6. 创建一个新的Item,可以使用以下命令: ``` scrapy genspider douban_book_spider book.douban.com ``` 这个命令会在项目目录下创建一个名为douban_book的目录,其中包含一个名为items.py的文件。将其中的代码替换为以下内容: ```python import scrapy class DoubanBookItem(scrapy.Item): book_name = scrapy.Field() author = scrapy.Field() ``` 这个Item定义了需要获取的数据项。 7. 最后,在命令行中运行以下命令,启动爬虫: ``` scrapy crawl douban_book -o books.csv ``` 这个命令会将获取到的数据保存到books.csv文件中。您可以在代码中修改数据的保存方式,例如保存到数据库或者其他文件格式中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CY3761

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值