python写的无用的爬虫

from lib2to3.pgen2 import driver
from tkinter.tix import IMAGETEXT
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
from bs4 import BeautifulSoup
from urllib.request import urlretrieve
d=webdriver.Firefox() #创建一个浏览器驱动对象
def get_picpageurl(num):#获取图片主页的链接
    hot='https://bbs.mihoyo.com/ys/home/29?type=hot'
    d.get(url=hot) #打开热榜
    if num<80:#计算网页下滑次数,不知道有什么好方法,只好用这种笨方法了
        i=100
    else:
        i=((num//80)+1)*100
    time.sleep(5)
    for x in range(0,i):#下来一百次大约能搞八十张图
        d.execute_script("window.scrollBy(0,300)")
    for x in range(0,100):
        d.execute_script("window.scrollBy(0,300)")
    a=d.find_elements(By.CLASS_NAME,'mhy-img-article-card')
    link3=[]
    for x in a:
        url=x.get_attribute('innerHTML')
        bs=BeautifulSoup(url,'lxml')
        link=bs.find(name='a',attrs={'class':'mhy-router-link'})
        link2=link.get('href')
        link3.append('https://bbs.mihoyo.com'+link2)
    return link3
def get_picurl(target):
    picurl2=[]
    for x in target:
        d.get(url=x) #打开目标页面
        time.sleep(5) #有些网页是动态加载的,d.get()语句完成后网页中的元素不一定全部加载完成,等待5s,使所有的元素加载完成
        img=d.find_element(By.CLASS_NAME,'mhy-img-article') #查找目标元素
        url=img.get_attribute('innerHTML') #读取元素内的所有内容
        b=BeautifulSoup(url,'lxml') #用beautifulsoup解析
        img=b.find('img') #图片的链接在<img>这个标签内,使用beautifulsoup的find提取出标签内的内容
        pic_url=img.get('large')#图片链接为src的值
        picurl2.append(pic_url)
    return picurl2
def download(url,name):
    houzhui=url[-3:]
    urlretrieve(url,str(name)+'.'+houzhui) 
if __name__=='__main__':
    options = webdriver.FirefoxOptions()
    options.add_argument("--headless") #设置火狐为headless无界面模式
    options.add_argument("--disable-gpu")
    d=webdriver.Firefox(executable_path='D:\geckodriver.exe',options=options) #创建一个浏览器驱动对象
    print('输入下载数量:')
    n=int(input())
    target=get_picpageurl(n) #获得插画页面链接
    print('页面链接获取完成')
    picurl=get_picurl(target) #获得插画图片的链接
    print('插画链接获取完成')
    i=0
    for x in picurl:
        download(x,i)
        i=i+1
        if i>=n:
            break
    print('下载完成')
    d.close()

    

用了selenium和firefox,因为不会正则表达式和xpath,所以使用beautiful来找链接,没什么用,写着玩玩,米游社的图质量不算特别高,还是pixiv好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值