python - Python“返回self.attrs [key]”错误
问题描述
我正在尝试编写一个非常简单的 python/美丽的汤脚本
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
my_url = 'https://www.travelok.com/listings/sid.1?last_region=&searchFormText=camping'
uclient = uReq(my_url)
page_html = uclient.read()
uclient.close()
filename = "oklahoma_state_parks.csv"
f = open(filename,"w")
headers = "park_name, park_phone, \n"
f.write (headers)
page_soup = soup(page_html, 'html.parser')
containers = page_soup.findAll("article", {"class":"search-result"})
这是测试代码,以确保它在这里工作。
parkinfo_name_test = containers[0].h2.text
parkinfo_phone_test = containers[0].address.div.text
parkinfo_name_test_2 = containers[2].h2.text
parkinfo_phone_test_2 = containers[2].address.div.text
如果我将代码运行到这一点(此处的所有内容),它就可以正常工作。我可以打印(parkinfo_name_test)并获得第一个结果。但是当我尝试循环它时 - 它失败了。当我尝试使用代码运行它时,我收到一条错误消息:
for container in containers:
parkinfo_name = container[0].h2.text
parkinfo_phone = container[0].address.div.text
print ("parkinfo_name: " + parkinfo_name)
print ("parkinfo_phone " + parkinfo_phone)
f.write (parkinfo_name + "," + parkinfo_phone + "\n")
f.close ()
这是我收到的错误消息:
Traceback (last recent call last): File "oklahoma_state_parks.py", line 43, in parkinfo_name = container[0].h2.text
File "C:\Users\Myname\AppData\Local\ Programs\Python\Python37-32\lib\site-packages\beautifulsoup4-4.6.1-py3.7.egg\bs4\element.py",第 1071 行,在 __getitem__return self.attrs[key] KeyError: 0
解决方案
问题似乎在这里:
for container in containers:
parkinfo_name = container[0].h2.text
尝试这样做:
for container in containers:
parkinfo_name = container.h2.text
parkinfo_phone = container.address.div.text
print ("parkinfo_name: " + parkinfo_name)
print ("parkinfo_phone " + parkinfo_phone)
f.write (parkinfo_name + "," + parkinfo_phone + "\n")
f.close ()
推荐阅读
- c - 如何在gdb中进行基本参数传递
- python - Python:如何使用不同的图像输入自动重复
- eleventy - Eleventy 没有为从嵌套 index.md 文件生成的索引文件添加 html 后缀
- javascript - Vue路由器条件重定向?
- python - 安装和使用 Python egg 文件
- c++ - 有没有办法在 C++ 中创建多个控制台?
- python - 如何在字符串中动态更改变量的值?
- python - 被 CORS 策略阻止:No"Access-Control-Allow-Origin" Using Flask
- vue.js - Vue 组合 API 监视对象
- python - 如何正确使用 sql alchemy 的 ~ 或 notin_ 子句?