Web抓取图像:找不到'rel'选择器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web抓取图像:找不到'rel'选择器相关的知识,希望对你有一定的参考价值。
[我正在学习自动完成无聊的东西的网络抓取部分的教程,并想从https://swordscomic.com/中抓取图像。
脚本应1)下载并解析html 2)下载漫画图像3)单击“上一漫画”按钮4)重复1-3]]
该脚本能够下载第一个漫画,但是在按下“上一个漫画”按钮或下载下一个漫画图像时会卡住。
可能的问题可能是:
Al的教程要求找到“ rel”选择器,但我找不到它。我相信该网站使用的格式与Al的教程中抓取的网站格式略有不同。我相信我使用的是正确的选择器,但脚本仍然崩溃。
也可能是此站点的主页登录页面包含漫画图像的方式,然后每个“先前”漫画都有一个附加的文件路径(以/ CCCLXVIII /或其形式)。
我尝试过:
为初始页面的漫画添加版本号,但这只会导致脚本更早崩溃。
将脚本的“上一个按钮”部分指向元素中的其他选择器,但仍然显示“索引超出范围”错误。
这里是我拥有的脚本:
#! python3 #swordscraper.py - Downloads all the swords comics. import requests, os, bs4 os.chdir(r'C:\Users\bromp\OneDrive\Desktop\Python') os.makedirs('swords', exist_ok=True) #store comics in /swords url = 'https://swordscomic.com/' #starting url while not url.endswith('#'): #Download the page. print('Downloading page %s...' % url) res = requests.get(url) res.raise_for_status soup = bs4.BeautifulSoup(res.text, 'html.parser') #Find the URL of the comic image. comicElem = soup.select('#comic-image') if comicElem == []: print('Could not find comic image.') else: comicUrl = comicElem[0].get('src') comicUrl = "http://" + comicUrl if 'swords' not in comicUrl: comicUrl=comicUrl[:7]+'swordscomic.com/'+comicUrl[7:] #Download the image. print('Downloading image %s...' % (comicUrl)) res = requests.get(comicUrl) res.raise_for_status() #Save the image to ./swords imageFile = open(os.path.join('swords', os.path.basename(comicUrl)), 'wb') for chunk in res.iter_content(100000): imageFile.write(chunk) imageFile.close() #Get the Prev button's url. prevLink = soup.select('a[id=navigation-previous]')[0] url = 'https://swordscomic.com/' + prevLink.get('href') print('Done')
这是脚本执行的输出以及它给出的特定错误消息:
Downloading page https://swordscomic.com/...
Downloading image http://swordscomic.com//media/Swords363bt.png...
Downloading page https://swordscomic.com//comic/CCCLXII/...
Could not find comic image.
Traceback (most recent call last):
File "C:\...\", line 39, in <module>
prevLink = soup.select('a[id=navigation-previous]')[0]
IndexError: list index out of range
我正在关注“自动完成无聊的东西的网络抓取”部分的教程,并希望从https://swordscomic.com/抓取图像。该脚本应1)下载并解析html 2)...
答案
该页面使用javascript呈现。特别是您提取的链接:
以上是关于Web抓取图像:找不到'rel'选择器的主要内容,如果未能解决你的问题,请参考以下文章
解决导入依赖报错找不到Execution failed for task ‘:app:mergeAfatDebugNativeLibs‘.