首页 > 编程语言 >python爬虫日记-爬取虎牙图片

python爬虫日记-爬取虎牙图片

时间:2022-09-04 19:11:57浏览次数:73  
标签:img 虎牙 python number param 爬取 url requests page

依赖requests库,运行此代码会爬取https://www.huya.com/g/2168上的图片,图片名字为@alt,会爬取到此脚本所在目录中的img文件夹中,没有此文件夹则运行不成功。

import requests
from lxml import etree
url='https://www.huya.com/g/2168'
r=requests.get(url)
data=etree.HTML(r.text)

girls=data.xpath('//img[@class="pic"]')  #匹配
for girl in girls:
    img_url=girl.xpath('./@data-original')[0]
    name=girl.xpath('./@alt')
    img=requests.get(img_url)
    with open('./aaa/%s.jpg' %name,'wb') as jpg:
        jpg.write(img.content)
        print("<%s> 下载成功" %name)

爬取单个图片https://anchorpost.msstatic.com/cdnimage/anchorpost/1053/af/5bc9192add9117924ab8cde0b86049_2168_1660647126.jpg,会保存为此脚本目录下1.jpg

# 1. 导包
import requests

# 2. 指定url
img_url = "https://anchorpost.msstatic.com/cdnimage/anchorpost/1053/af/5bc9192add9117924ab8cde0b86049_2168_1660647126.jpg"
# 3. 使用GET方法发送请求,该方法会返回一个响应对象
response = requests.get(img_url)
# 4. 获取响应数据
print(response.content)

# 保存数据
with open('./1.jpg', 'wb', ) as f:
    f.write(response.content)

 爬取百度图片搜索到的图片,依赖tqdm和requests,保存到当前目录中图片名字imgmaintenanceWorker_+num

# -*- coding: UTF-8 -*-"""
import requests
import tqdm


def configs(search, page, number):
    """

    :param search:
    :param page:
    :param number:
    :return:
    """
    url = 'https://image.baidu.com/search/acjson'
    params = {
        "tn": "resultjson_com",
        "logid": "11555092689241190059",
        "ipn": "rj",
        "ct": "201326592",
        "is": "",
        "fp": "result",
        "queryWord": search,
        "cl": "2",
        "lm": "-1",
        "ie": "utf-8",
        "oe": "utf-8",
        "adpicid": "",
        "st": "-1",
        "z": "",
        "ic": "0",
        "hd": "",
        "latest": "",
        "copyright": "",
        "word": search,
        "s": "",
        "se": "",
        "tab": "",
        "width": "",
        "height": "",
        "face": "0",
        "istype": "2",
        "qc": "",
        "nc": "1",
        "fr": "",
        "expermode": "",
        "force": "",
        "pn": str(60 * page),
        "rn": number,
        "gsm": "1e",
        "1617626956685": ""
    }
    return url, params


def loadpic(number, page):
    """

    :param number:
    :param page:
    :return:
    """
    while (True):
        if number == 0:
            break
        url, params = configs(search, page, number)
        result = requests.get(url, headers=header, params=params).json()
        url_list = []
        for data in result['data'][:-1]:
            url_list.append(data['thumbURL'])
        for i in range(len(url_list)):
            getImg(url_list[i], 60 * page + i, path)
            bar.update(1)
            number -= 1
            if number == 0:
                break
        page += 1
    print("\nfinish!")


def getImg(url, idx, path):
    """

    :param url:
    :param idx:
    :param path:
    :return:
    """
    img = requests.get(url, headers=header)
    #图片名字maintenanceWorker_
    file = open(path + 'maintenanceWorker_' + str(idx + 1) + '.jpg', 'wb')
    file.write(img.content)
    file.close()


if __name__ == '__main__':
    search = input("请输入搜索内容:")
    number = int(input("请输入需求数量:"))
    path = './img'
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0'}

    bar = tqdm.tqdm(total=number)
    page = 0
    loadpic(number, page)

 

标签:img,虎牙,python,number,param,爬取,url,requests,page
From: https://www.cnblogs.com/zhangzhang001/p/16655733.html

相关文章

  • Python Web开发主流框架
    Web开发是Python语言应用领域的重要部分,也是工作岗位最多的领域。如果你对基于Python的Web开发有兴趣,正打算使用Python做Web开发,或者已经是一个Web开发者有工作需要,要做自......
  • python-常用内置函数
    数学相关的内置函数abs:取绝对值divmod:求两个数相除的商和余数max:求最大数min:求最小数pow:幂运算round:四舍五入保留到指定小数位sum:用来求和可迭代对象相关......
  • python中的if和elif区别
    代码1:1numbers=[1,2,3,4,5,6,7,8,9]2fornumberinnumbers:3ifnumber==1:4res='st'5ifnumber==2:6res='nd......
  • Python scrapy 爬虫 模拟登录
    模拟登录,可以解决某些网站,必须要登录才能抓取的问题。模拟登录就是要拿到网站的cookie。当爬虫程序进入网站开始抓取时数据时,爬虫的入口并不是scrapy 给定的pass,而......
  • 【Python基础】内置函数filter详解
    filter,顾名思义,就是一个过滤器。其作用是从列表(或其他序列类型)中筛选出满足条件的子列表,filter是python的内置函数,无须import即可直接使用。1filter的基础用法对于列表(或......
  • Python中assert断言添加错误提示信息
    参考资料:https://www.cnblogs.com/meina/p/13848090.html当我们使用Python写代码的时候,可以多用assert断言语句来让代码变得更加鲁棒。但是如果单纯用assert......
  • python读取xlsx文件并转化为 json 数据
    fromopenpyxlimportload_workbookimportosfromreimportfindallimportjson#读取所有的sheet目录defread_xlsx(path="./"):lis=os.listdir(path)......
  • Python入门系列(九)pip、try except、用户输入、字符串格式
    pip包含模块所需的所有文件。检查是否安装了PIP$pip--version安装包$pipinstallpackage_name使用包importpackage_name删除包$pipuninstallcamelcase......
  • 10个python初学者常犯的错误
    下面10个python初学者常犯的错误,并不是真正的代码错误,代码照样可以运行,但是不够pythonic,因为python有自己的语言哲学,在代码的处理上有传统语言无法比拟的简洁性和便捷性。......
  • 总结90条写Python程序的建议
    首先建议1、理解Pythonic概念—-详见Python中的《Python之禅》建议2、编写Pythonic代码(1)避免不规范代码,比如只用大小写区分变量、使用容易混淆的变量名、害怕过......