Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用beautifulsoup刮取图像时出错_Python_Python 3.x_Beautifulsoup - Fatal编程技术网

Python 使用beautifulsoup刮取图像时出错

Python 使用beautifulsoup刮取图像时出错,python,python-3.x,beautifulsoup,Python,Python 3.x,Beautifulsoup,原始代码在这里: 因此,我正在尝试使用Python脚本从网站上收集图片,以便更好地抓取网页 我试图从“”获取图像 第一个错误是 导致此警告的代码位于文件/Bureau/scraster.py的第12行。要消除此警告,请传递附加参数 将“features=“lxml”添加到BeautifulSoup构造函数 所以我做了: soup=BeautifulSoup(纯文本,features=“lxml”) 我还修改了类以反映500px中的标记 但是现在脚本停止运行,什么也没发生 最后看起来是这样的:

原始代码在这里:

因此,我正在尝试使用Python脚本从网站上收集图片,以便更好地抓取网页

我试图从“”获取图像

第一个错误是

导致此警告的代码位于文件/Bureau/scraster.py的第12行。要消除此警告,请传递附加参数 将“features=“lxml”添加到BeautifulSoup构造函数

所以我做了:

soup=BeautifulSoup(纯文本,features=“lxml”)
我还修改了类以反映500px中的标记

但是现在脚本停止运行,什么也没发生

最后看起来是这样的:

导入请求
从bs4导入BeautifulSoup
导入urllib.request
随机输入
url=”https://500px.com/editors"
source_code=requests.get(url)
纯文本=源代码.text
soup=BeautifulSoup(纯文本,features=“lxml”)
对于soup.find_all(“a”,{“class”:“photo_link”})中的链接:
href=link.get('href')
打印(href)
img_name=random.randrange(1500)
全名=str(img_name)+“.jpg”
urllib.request.urlretrieve(href,全名)
打印(“循环中断”)

我做错了什么?

看着你要刮的页面,我注意到了一些东西。直到页面完成加载后的几分钟,数据才会显示为加载。这告诉我,他们正在使用JS框架在页面加载后加载图像

您的刮板将无法使用此页面,因为它不会在正在拖动的页面上运行JS。运行脚本并打印出
纯文本
包含的内容证明了这一点:

<a class='photo_link {{#if hasDetailsTooltip}}px_tooltip{{/if}}' href='{{photoUrl}}'>

,尽管我从未使用过它,所以我不完全了解它的功能;我想,围绕这一点的工具将大大增加您试图做的事情的复杂性。

看着您试图刮取的页面,我注意到了一些东西。直到页面完成加载后的几分钟,数据才会显示为加载。这告诉我,他们正在使用JS框架在页面加载后加载图像

您的刮板将无法使用此页面,因为它不会在正在拖动的页面上运行JS。运行脚本并打印出
纯文本
包含的内容证明了这一点:

<a class='photo_link {{#if hasDetailsTooltip}}px_tooltip{{/if}}' href='{{photoUrl}}'>

,尽管我从未使用过它,所以我不完全了解它的功能;我想围绕这一点的工具将大大增加您尝试执行的操作的复杂性。

实际上,该网站是通过
JavaScript
使用
XHR
请求加载到以下

因此,您可以通过
API
直接访问它

请注意,您可以根据需要将参数
rpp=50
增加到任意数量,以获得大于
50
的结果

您还可以访问图像
url
本身,以便直接编写它

导入请求
r=requests.get("https://api.500px.com/v1/photos?rpp=50&feature=editors&image_size%5B%5D=1&image_size%5B%5D=2&image_size%5B%5D=32&image_size%5B%5D=31&image_size%5B%5D=33&image_size%5B%5D=34&image_size%5B%5D=35&image_size%5B%5D=36&image_size%5B%5D=2048&image_size%5B%5D=4&image_size%5B%5D=14&sort=&include_states=true&include_licensing=true&formats=jpeg%2Clytro&only=&排除=&personalized_categories=&page=1&rpp=50“).json()
对于r[“照片”中的项目:
打印(项目['image\u url'][-1])
请注意,
image\u url
保持不同的
img
大小。因此,您可以选择首选的并保存它。这里我选择了大的一个

直接保存:

导入请求
将requests.Session()作为请求:
r=req.get(“https://api.500px.com/v1/photos?rpp=50&feature=editors&image_size%5B%5D=1&image_size%5B%5D=2&image_size%5B%5D=32&image_size%5B%5D=31&image_size%5B%5D=33&image_size%5B%5D=34&image_size%5B%5D=35&image_size%5B%5D=36&image_size%5B%5D=2048&image_size%5B%5D=4&image_size%5B%5D=14&sort=&include_states=true&include_licensing=true&formats=jpeg%2Clytro&only=&排除=&personalized_categories=&page=1&rpp=50“).json()
结果=[]
对于r[“照片”中的项目:
打印(f“下载{item['name']}”)
save=req.get(项['image\u url'][-1])
name=save.headers.get(“内容处置”)[9:]
以open(名称“wb”)作为f:
f、 写入(保存.content)

实际上,该网站是通过
JavaScript
使用
XHR
请求加载到以下

因此,您可以通过
API
直接访问它

请注意,您可以根据需要将参数
rpp=50
增加到任意数量,以获得大于
50
的结果

您还可以访问图像
url
本身,以便直接编写它

导入请求
r=请求。获取(“https://api.500px.com/v1/photos?rpp=50&feature=editors&image_size%5B%5D=1&image_size%5B%5D=2&image_size%5B%5D=32&image_size%5B%5D=31&image_size%5B%5D=33&image_size%5B%5D=34&image_size%5B%5D=35&image_size%5B%5D=36&image_size%5B%5D=2048&image_size%5B%5D=4&image_size%5B%5D=14&sort=&include_states=true&include_licensing=true&formats=jpeg%2Clytro&only=&排除=&personalized_categories=&page=1&rpp=50“).json()
对于r[“照片”中的项目:
打印(项目['image\u url'][-1])
请注意,
image\u url
保持不同的
img
大小。因此,您可以选择首选的并保存它。这里我选择了大的一个

直接保存:

导入请求
将requests.Session()作为请求:
r=req.get(“https://api.500px.com/v1/photos?rpp=50&feature=editors&image_size%5B%5D=1&image_size%5B%5D=2&image_size%5B%5D=32&image_size%5B%5D=31&image_size%5B%5D=33&image_size%5B%5D=34&image_size%5B%5D=35&image_size%5B%5D=36&image_size%5B%5D=2048&image_size%5B%5D=4&image_size%5B%5D=14&sort=&include_states=true&include_licensing=true&formats=jpeg%2Clytro&only=&排除=&U个性化类别=&