我希望这里的人能够回答我认为是一个简单的问题。我是一个完全的新手,一直在尝试从网站 Archdaily 创建一个图像网络爬虫。经过多次调试后,下面是我的代码:
#### - Webscraping 0.1 alpha -
#### - Archdaily -
import requests
from bs4 import BeautifulSoup
# Enter the URL of the webpage you want to download the images from
page = 'https://www.archdaily.com/63267/ad-classics-house-vi-peter-eisenman/5037e0ec28ba0d599b000190-ad-classics-house-vi-peter-eisenman-image'
# Returns the webpage source code under page_doc
result = requests.get(page)
page_doc = result.content
# Returns the source code as BeautifulSoup object, as nested data structure
soup = BeautifulSoup(page_doc, 'html.parser')
img = soup.find('div', class_='afd-gal-items')
img_list = img.attrs['data-images']
for k, v in img_list():
if k == 'url_large':
print(v)
这些元素在这里:
img = soup.find('div', class_='afd-gal-items')
img_list = img.attrs['data-images']
尝试隔离 data-images 属性,如下所示:
这部分我github上传,很长
如您所见,或者我在这里完全错了,我尝试从这个最终字典列表中调用“url_large”值时出现了 TypeError,如下所示:
Traceback (most recent call last):
File "D:/Python/Programs/Webscraper/Webscraping v0.2alpha.py", line 23, in <module>
for k, v in img_list():
TypeError: 'str' object is not callable
我相信我的错误在于由此产生的“数据图像”隔离,对我来说它看起来像列表中的字典,因为它们被方括号和大括号括起来。我在这里完全不适应,因为我基本上是盲目地进入这个项目的(甚至还没有读过 Guttag 的书的第 4 章)。
我也到处寻找想法,并试图模仿我发现的东西。我发现其他人之前提供的将数据更改为 JSON 数据的解决方案,所以我找到了以下代码:
jsonData = json.loads(img.attrs['data-images'])
print(jsonData['url_large'])
但这是一个半身像,如下所示:
Traceback (most recent call last):
File "D:/Python/Programs/Webscraper/Webscraping v0.2alpha.py", line 29, in <module>
print(jsonData['url_large'])
TypeError: list indices must be integers or slices, not str
在更改这些字符串值时我缺少一个步骤,但我不确定在哪里可以更改它们。希望有人能帮我解决这个问题,谢谢!
GCT1015
ITMISS
慕虎7371278
相关分类