python - 无法从网页中获取所有图像
问题描述
我想刮掉这个链接中的所有图片链接,我正在使用 requests+Beautiful soup-python 3.7。我的问题是结果是 3,而页面上有 6 张图片。
import requests
from bs4 import BeautifulSoup as bs
url='https://ahara.kar.nic.in/FCS_report/ViewRC/dup_rc_view.aspx'
var='240100160336'
payload={'rc_no':var}
headers={'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3','Cookie':'ASP.NET_SessionId=v4kd535hn3d43z0x4ttgzqit','User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}
res=requests.get(url,headers=headers,data=payload)
obj=bs(res.text,'html.parser')
#obj=obj.find('table')
imgs=obj.find_all('img')
print(len(imgs))
编辑:服务器使用 cookie 给我想要的图片和完整的 html 页面,所以在添加 cookie 处理并在我的代码中添加正确的 url 后,它可以按需要工作!
解决方案
那是因为在您的代码中,您只能在 table 标记内找到图像:
obj=obj.find('table')
其中只有 2 个。
尝试在页面中搜索其他图像:
import requests
from bs4 import BeautifulSoup as bs
url='https://ahara.kar.nic.in/FCS_report/ViewRC/dup_rc_view.aspx?rc_no={};'
#var=input("Enter the variable to Bring Photos links:")
var='240100160336'
url=url.format(var)
headers={'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3','Cookie':'ASP.NET_SessionId=v4kd535hn3d43z0x4ttgzqit','User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}
res=requests.get(url,headers=headers)
obj=bs(res.text,'html.parser')
# Search for images inside tables
objTable=obj.find('table')
imgs=objTable.find_all('img')
# Search for other images in the page
imgs2=obj.find_all('img')
print(len(imgs) + len(imgs2))
编辑:
您的代码中提供的 URL 与您要抓取的 URL 不同。
您的代码中的 URL 是:
https://ahara.kar.nic.in/FCS_report/ViewRC/dup_rc_view.aspx?rc_no={};
您用于修改 URL 并向其附加变量的方法没有帮助。它打印:
https://ahara.kar.nic.in/FCS_report/ViewRC/dup_rc_view.aspx?rc_no=240100160336;
请查看此链接以获取有关将URL 解析为组件的帮助
您在帖子中链接的 URL 是:
https://ahara.kar.nic.in/FCS_report/ViewRC/dup_rc_view.aspx?rc_no=240100160336
我稍微修改了您的代码并添加了正确的 URL:
import requests
from bs4 import BeautifulSoup as bs
url='https://ahara.kar.nic.in/FCS_report/ViewRC/dup_rc_view.aspx?rc_no=240100160336'
res=requests.get(url)
obj=bs(res.text, 'html.parser')
# Search for images in the page
imgs=obj.find_all('img')
images = []
for img in imgs:
images.append(img.get('src'))
print(images)
print(len(images))
请看看它现在是否有效。
推荐阅读
- android - 当系统缩放打开时,我可以禁用 Android/TouchWiz 缩放我的应用程序的内容吗?
- javascript - 带有 reactjs (npm) 的 RQL/RSQL(资源查询语言)
- azure - iOS 中的 Azure AD 身份验证
- nlp - 如何将 word embeddings 和 pos embeddings 结合在一起来构建分类器
- swift - Disabling a button till user decides to enable it in swift
- mysql - 在 NodeJs 中的单个查询中从多个数据库中获取数据
- tabs - 如何在 Markdown 中生成标签
- json - Scala playfamework - 如何用另一个 JSON 字符串包装?
- capl - CAPL 信号发现
- angular - Angular 路由中的 Google 身份验证无法正常工作