首页 > 其他分享 >爬取腾讯漫画_网球王子

爬取腾讯漫画_网球王子

时间:2023-04-10 14:58:46浏览次数:34  
标签:webdriver 网球王子 url selenium 爬取 import 漫画 path browser

一,通过Selenium模块完成自动化获取图片

import time  # time时间模块用于延时等待
import os  # os模块调用系统模块创建目录
import requests  # 发送请求模块
from selenium import webdriver  # 导入selenium包
from selenium.webdriver.chrome.service import Service  # 导入Service(webdriver需要添加的参数)
from selenium.webdriver.chrome.options import Options  # 导入Options(webdriver需要添加的参数)
from selenium.webdriver.common.by import By  # 导入By,这个模块可以后期用于xpath的使用
from selenium.webdriver.common.action_chains import ActionChains  # 实现自动化动作链使用的模块

项目初始化

1. chrome浏览的chromedriver.exe可以通过下列的链接进行获取。注意:要先查看你自身的chrome浏览器的版本。找一个版本类似的就行,不用完全精准。如果大版本不同是使用不了的会报错。

https://chromedriver.storage.googleapis.com/index.html

 2. 通过如下的代码完成webdriver的初始化工作。opt.add_argument在代码注释中已经标注了解释。headers需要结合你自身的网页查看请求头来填写。

service = Service(
    executable_path='D:\Python_系列\python爬虫\python_爬虫进阶项目\chromedriver.exe')  # executable_path引入驱动。这里引入的是chrome浏览器的欠驱动。如果是其他浏览器的驱动需要对应浏览器版本下载。
opt = Options()
opt.add_argument('--disable-blink-features=AutomationControlled')  # 隐藏selenium使用痕迹
# opt.add_argument("disable-infobars");

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
}

 

二,下载图片

这里将下载封装成了一个Download函数了。然后在main函数中调用即可。

 

def download(url, path):
    browser = webdriver.Chrome(service=service, options=opt) # 初始化browser浏览器
    browser.maximize_window() # 将浏览器窗口最大化
    browser.get(url)

    filename = browser.find_element(By.XPATH, '//*[@id="comicTitle"]/span[@class="title-comicHeading"]').text #获取标题
    pic_list = browser.find_elements(By.XPATH, '//*[@id="comicContain"]/li/img') #获取所有的图片链接

   # 通过for循环遍历一个章节下的所有图片链接 for num, pic in enumerate(pic_list): time.sleep(1) # 如果滚动太快同样也拿不到数据,因此结合网络设置停顿时间 # 页面特点必须滚动到指定页面后才加载新的jpg。因此需要通过ActionChains动作链来模拟滚动操作。 ActionChains(browser).scroll_to_element(pic).perform() link = pic.get_attribute('src') # 通过get_attribute方法获取属性值 # print(link, filename) content = requests.get(link, headers=headers).content #获取图片链接中的图片,因为是图片所以要转化成content二进制码流

     # 通过Os模块创建目录,判断目录不存在则创建该目录。木留存在则保存图片 if not os.path.exists(f'{path}/{filename}'): os.makedirs(f'{path}/{filename}') with open(f'{path}/{filename}/{num}.jpg', 'wb') as f: f.write(content) print(f'已下载...{filename}...第{num}的图片')   # 获取当前页面最下方的点击下一页的xpath并跳转到下一个章节 next_page = browser.find_element(By.XPATH, '//*[@id="mainControlNext"]').get_attribute('href') browser.close() #关闭浏览器 return next_page #将数据返回

三,入口出传入url和path存储路径

 

if __name__ == '__main__':
    url = 'https://ac.qq.com/ComicView/index/id/530987/cid/4'   #这里把漫画的序幕或者第一回的链接填写进来
    path = 'D:\Python_系列\python爬虫\python_爬虫进阶项目\腾讯动漫' #设定一个本地目录用于保存下载后的图片

#当我们点击了下一页后url会变,因此这里设置一个死循环让它反复将url和路径传给download函数。直到所有章节下载完毕后遇到brower.close()语句后则退出整个浏览器。 while url: url = download(url, path)

 

四,整个代码

import time  # time时间模块用于延时等待
import os  # os模块调用系统模块创建目录
import requests  # 发送请求模块
from selenium import webdriver  # 导入selenium包
from selenium.webdriver.chrome.service import Service  # 导入Service(webdriver需要添加的参数)
from selenium.webdriver.chrome.options import Options  # 导入Options(webdriver需要添加的参数)
from selenium.webdriver.common.by import By  # 导入By,这个模块可以后期用于xpath的使用
from selenium.webdriver.common.action_chains import ActionChains  # 实现自动化动作链使用的模块

service = Service(
    executable_path='D:\Python_系列\python爬虫\python_爬虫进阶项目\chromedriver.exe')  # executable_path引入驱动。这里引入的是chrome浏览器的欠驱动。如果是其他浏览器的驱动需要对应浏览器版本下载。
opt = Options()
opt.add_argument('--disable-blink-features=AutomationControlled')  # 隐藏selenium使用痕迹
# opt.add_argument("disable-infobars");

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
}


def download(url, path):
    browser = webdriver.Chrome(service=service, options=opt)
    browser.maximize_window()
    browser.get(url)

    filename = browser.find_element(By.XPATH, '//*[@id="comicTitle"]/span[@class="title-comicHeading"]').text
    pic_list = browser.find_elements(By.XPATH, '//*[@id="comicContain"]/li/img')

    for num, pic in enumerate(pic_list):
        time.sleep(1)  # 如果滚动太快同样也拿不到数据,因此结合网络设置停顿时间
        # 页面特点必须滚动到指定页面后才加载新的jpg。因此需要通过ActionChains动作链来模拟滚动操作。
        ActionChains(browser).scroll_to_element(pic).perform()
        link = pic.get_attribute('src')  # 通过get_attribute方法获取属性值
        # print(link, filename)
        content = requests.get(link, headers=headers).content
        if not os.path.exists(f'{path}/{filename}'):
            os.makedirs(f'{path}/{filename}')
        with open(f'{path}/{filename}/{num}.jpg', 'wb') as f:
            f.write(content)
            print(f'已下载...{filename}...第{num}的图片')

    next_page = browser.find_element(By.XPATH, '//*[@id="mainControlNext"]').get_attribute('href')
    browser.close()
    return next_page


if __name__ == '__main__':
    url = 'https://ac.qq.com/ComicView/index/id/530987/cid/4'
    path = 'D:\Python_系列\python爬虫\python_爬虫进阶项目\腾讯动漫'

    while url:
        url = download(url, path)
完整代码

 

标签:webdriver,网球王子,url,selenium,爬取,import,漫画,path,browser
From: https://www.cnblogs.com/liupengpengg/p/17302814.html

相关文章

  • 一个前端大佬的十年回顾 | 漫画前端的前世今生
    作者:京东科技胡骏引言岁月如梭,十载流年前端技术,蓬勃向前HTML,CSS,JavaScript演绎出璀璨夺目的技术画卷回到十年前,前端技术就像一名戴着厚重眼镜的书呆子,总是小心翼翼,被各种各样的浏览器兼容性问题欺负(就像在小学被欺负一样)。但随着时间的推移,这个书呆子开始锻炼,变得越来越......
  • 爬取BOSS直聘信息selenium+CSS及总结
    1、fromseleniumimportwebdriverfromselenium.webdriver.common.byimportByimporttimeimportcsvf=open(r'D:\Pyprogram\venv\从零开始学python网络爬虫\爬取BOOS直聘.csv','wt',newline='',encoding='utf-8')writer=csv.wri......
  • 爬虫最后一天,爬取到的数据存到mysql中,爬虫和下载中间件、加代理、cookie、header、se
    爬到的数据存到mysql中classFirstscrapyMySqlPipeline:defopen_spider(self,spider):print('我开了')self.conn=pymysql.connect(user='root',password="",host='127.0.0.1......
  • Scrapy爬虫框架 -- 图片爬取
    一、新建一个tupian爬虫项目scrapystartprojecttupian二、进入到tupian项目,新建一个image爬虫文件cdtupianscrapygenspiderimagewww.xxx.com三、修改配置文件settingsROBOTSTXT_OBEY=FalseLOG_LEVEL='ERROR'USER_AGENT="Mozilla/5.0(WindowsNT10.0;Win64;x64)......
  • python-xpath,爬取猪八戒网(半成品)
    数据未进行清洗xpath  / 层级关系text() 拿文本//    https://blog.csdn.net/KELLENSHAW/article/details/127877476爬取https://task.zbj.com/hall/list-all-0-p1?kw=HTML先定位小盒子的div然后通过检查,xpath://*[@id="hall-list-wrap"]/div[4]/div[1]/div[1]/div[1]/d......
  • 在线商城爬虫 带爬取记录 以11TREET 为例
    整体思路第一步 抓取全部的列表页链接第二步抓取每个列表页的商品总数,页数 第三步单个列表页进行分业抓取商品价格第四步单个列表页抓取完成后输出商品数据并在本地文件记录本次抓取最后一步合并各个列页表抓取的商品数据 第一步爬取的网站,获得分类信息https:......
  • 爬取海量ip
    importrequestsfromlxmlimportetreeimportpandasaspdimporttimeurl="http://www.66ip.cn/index.html"headers={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/108.0.0......
  • 爬取豆瓣top250
    importrequestsfromlxmlimportetreeimportpandasaspdnum=0url="https://movie.douban.com/top250?start="+str(num)+"&filter="headers={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/&q......
  • 爬取王者荣耀皮肤并保存图片
    importrequestsimporttimeimportpathlibfromlxmlimportetreeheaders={"user-agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/108.0.0.0Safari/537.36"}url="https://pvp.qq.com......
  • python-爬虫-css提取-写入csv-爬取猫眼电影榜单
    猫眼有一个电影榜单top100,我们将他的榜单电影数据(电影名、主演、上映时间、豆瓣评分)抓下来保存到本地的excle中本案例使用css方式提取页面数据,所以会用到以下库importtimeimportrequestsimportparsel#解析库,解析cssimportcsv#爬取的数据写入csv创建csv文件标头信息......