【问题标题】:Can't get all images from web page无法从网页中获取所有图像
【发布时间】:2019-07-24 20:55:13
【问题描述】:

我想刮掉这个Link中的所有图片链接,我正在使用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 后,它可以按需要工作!

【问题讨论】:

  • 你的意思是“刮”?因为“废品”意味着你想摆脱它们。
  • 抱歉我不知道

标签: python web-scraping


【解决方案1】:

那是因为在您的代码中,您只能在 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))

编辑:

您的代码中提供的网址与您要抓取的网址不同。

您的代码中的网址是:

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;

请查看此链接以获取有关Parse URLs into components的帮助

您在帖子中链接的网址是:

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))

请看看它现在是否有效。

【讨论】:

  • 如果你运行代码并打印链接,你会发现并没有找到所有的图像+我注意到头部图像的src(打印imgs和imgs2来理解)是空的+当我打印页面代码,搜索代码本身的imgs,大部分图片标签都找不到
  • 请在浏览器中查看图片信息或查看页面源代码,您会注意到报告了5张图片,但只有两张具有绝对真实路径,而其他三张是通过ASP脚本动态引入浏览器的没有真正的路径。
  • 我将参数放在有效负载中并添加了标题,但没有用,当我用浏览器更改它时:它有效,现在如何生成这个 cookie(阅读问题编辑)跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-11
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多