包含5个 赞 踩 Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。
Python爬取腾讯动漫(仅限免费部分)_腾讯漫画解析接口
#打开腾讯动漫首页url = 'https://ac.qq.com/'#给网页发送请求data = requests.get(url).text#将网页信息转换成xpath可识别的类型html = etree.HTML(data)#提取到每个漫画的目录页地址comic_list = html.xpath('//a[@class="in-rank-name"]/@href')print(comic_list)
#遍历提取到的信息for comic in comic_list: #拼接成为漫画目录页的网址 comic_url = url + str(comic) #从漫画目录页提取信息 url_data = requests.get(comic_url).text #准备用xpath语法提取信息 data_comic = etree.HTML(url_data) #提取漫画名--text()为提取文本内容 name_comic = data_comic.xpath("//h2[@class='works-intro-title ui-left']/strong/text()") #提取该漫画每一页的地址 item_list = data_comic.xpath("//span[@class='works-chapter-item']/a/@href") print(name_comic) print(item_list)
#webdriver位置
path = r'/home/jmhao/chromedriver'
#浏览器参数设置
browser = webdriver.Chrome(executable_path=path)
#开始请求第一个章节的网址
browser.get(item_url)
#设置延时,为后续做缓冲
sleep(2)
#尝试执行下列代码
try:
#设置自动下滑滚动条操作
for i in range(1, 100):
#滑动距离设置
js = 'var q=document.getElementById("mainView").scrollTop = ' + str(i * 1000)
#执行滑动选项
browser.execute_script(js)
#延时,使图片充分加载
sleep(2)
sleep(2)
#将打开的界面截图保存,证明无界面浏览器确实打开了网页 browser.get_screenshot_as_file(str(page_name) + ".png")
#获取当前页面源码 data = browser.page_source #在当前文件夹下创建html文件,并将网页源码写入 fh = open("dongman.html", "w", encoding="utf-8") #写入操作 fh.write(data) #关掉浏览器 fh.close() # 若上述代码执行报错(大概率是由于付费漫画),则执行此部分代码 except Exception as err: #跳过错误代码 pass
#设置自动下滑滚动条操作for i in range(1, 100):
#滑动距离设置 js = 'var q=document.getElementById("mainView").scrollTop = ' + str(i * 1000)
#执行滑动选项 browser.execute_script(js)
#延时,使图片充分加载 sleep(2)
except Exception as err:
#跳过错误代码 pass
for items in soup.find_all("img"):
#提取图片地址信息 item = items.get("src")
#请求图片地址 comic_pic = requests.get(item).content
#print(comic_pic) #尝试提取图片,若发生错误则跳过 try:
#打开文件夹,将图片存入 with open('G:/comic/' + str(name_comic) + '/' + str(page_name) + '/' + str(i + 1) + '.jpg', 'wb') as f:
#print('正在下载第 ', (i + 1), ' 张图片中') print('正在下载' , str(name_comic) , '-' , str(page_name) , '- 第' , (i+1) , '张图片')
#写入操作 f.write(comic_pic)
#更改图片名,防止新下载的图片覆盖原图片 i += 1 #若上述代码执行报错,则执行此部分代码 except Exception as err:
#跳过错误代码 pass