Python 爬取腾讯漫画
1 import requests2 from lxml import html3 from selenium import webdriver4 from time import sleep5 from bs4 import BeautifulSoup6 from selenium.webdriver.chrome.options import Options7 import os89 #打开腾
·
1 import requests
2 from lxml import html
3 from selenium import webdriver
4 from time import sleep
5 from bs4 import BeautifulSoup
6 from selenium.webdriver.chrome.options import Options
7 import os
8
9 #打开腾讯动漫首页
10 url = 'https://ac.qq.com/'
11 #给网页发送请求
12 data = requests.get(url).text
13 #将网页信息转换成xpath可识别的类型
14 htmlSrc = html.etree.HTML(data)
15 #提取到每个漫画的目录页地址
16 comic_list = htmlSrc.xpath('//a[@class="in-rank-name"]/@href')
17 #print(comic_list)
18 #遍历提取到的信息
19 for comic in comic_list:
20 #拼接成为漫画目录页的网址
21 comic_url = url + str(comic)
22 #从漫画目录页提取信息
23 url_data = requests.get(comic_url).text
24 #准备用xpath语法提取信息
25 data_comic = html.etree.HTML(url_data)
26 #提取漫画名--text()为提取文本内容
27 name_comic = data_comic.xpath("//h2[@class='works-intro-title ui-left']/strong/text()")
28 #提取该漫画每一页的地址
29 item_list = data_comic.xpath("//span[@class='works-chapter-item']/a/@href")
30 # print(name_comic)
31 # print(item_list)
32 #以漫画名字为文件夹名创建文件夹
33 os.makedirs('comic/' + str(name_comic))
34 #将一本漫画的每一章地址遍历
35 for item in item_list:
36 #拼接每一章节的地址
37 item_url = url + str(item)
38 #print(item_url)
39 #请求每一章节的信息
40 page_mes = requests.get(item_url).text
41 #准备使用xpath提取内容
42 page_ming = html.etree.HTML(page_mes)
43 #提取章节名
44 page_name = page_ming.xpath('//span[@class="title-comicHeading"]/text()')
45 #print(page_name)
46 #再以章节名命名一个文件夹
47 os.makedirs('comic/' + str(name_comic) + '/' + str(page_name))
48
49 #以下为代码的主体部分
50
51 #设置谷歌无界面浏览器
52 chrome_options = Options()
53 chrome_options.add_argument('--headless')
54 chrome_options.add_argument('--disable-gpu')
55 #webdriver位置
56 path = r'/home/jmhao/chromedriver'
57 #浏览器参数设置
58 browser = webdriver.Chrome(options=chrome_options)
59 #开始请求第一个章节的网址
60 browser.get(item_url)
61 #设置延时,为后续做缓冲
62 sleep(2)
63 #browser.get_screenshot_as_file(str(page_name) + ".png")
64 #尝试执行下列代码
65 try:
66 #设置自动下滑滚动条操作
67 for i in range(1, 100):
68 #滑动距离设置
69 js = 'var q=document.getElementById("mainView").scrollTop = ' + str(i * 1000)
70 #执行滑动选项
71 browser.execute_script(js)
72 #延时,使图片充分加载
73 sleep(2)
74 sleep(2)
75 #将打开的界面截图保存,证明无界面浏览器确实打开了网页
76 browser.get_screenshot_as_file(str(page_name) + ".png")
77 #获取当前页面源码
78 data = browser.page_source
79 #在当前文件夹下创建html文件,并将网页源码写入
80 fh = open("dongman.html", "w", encoding="utf-8")
81 #写入操作
82 fh.write(data)
83 #关掉无界面浏览器
84 fh.close()
85
86 #下面的操作为打开保存的html文件,提取其中的图片信息,并保存到文件夹中
87
88 #用beautifulsoup打开本地文件
89 html_new = BeautifulSoup(open('dongman.html', encoding='utf-8'), features='html.parser')
90 #提取html文件中的主体部分
91 soup = html_new.find(id="mainView")
92 #设置变量i,方便为保存的图片命名
93 i = 0
94 #提取出主体部分中的img标签(因为图片地址保存在img标签中)
95 for items in soup.find_all("img"):
96 #提取图片地址信息
97 item = items.get("src")
98 #请求图片地址
99 comic_pic = requests.get(item).content
100 #print(comic_pic)
101 #尝试提取图片,若发生错误则跳过
102 try:
103 #打开文件夹,将图片存入
104 with open('comic/' + str(name_comic) + '/' + str(page_name) + '/' + str(i + 1) + '.jpg', 'wb') as f:
105 #print('正在下载第 ', (i + 1), ' 张图片中')
106 print('正在下载' , str(name_comic) , '-' , str(page_name) , '- 第' , (i+1) , '张图片')
107 #写入操作
108 f.write(comic_pic)
109 #更改图片名,防止新下载的图片覆盖原图片
110 i += 1
111 #若上述代码执行报错,则执行此部分代码
112 except Exception as err:
113 #跳过错误代码
114 pass
115 # 若上述代码执行报错(大概率是由于付费漫画),则执行此部分代码
116 except Exception as err:
117 #跳过错误代码
118 pass

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)