【发布时间】:2021-05-03 17:56:17
【问题描述】:
我正在尝试创建一个循环,该循环将遍历位置并提取必要的数据并将其附加到其余位置。
感觉自己写的代码不错,但是一直报错:
AttributeError: 'NoneType' object has no attribute 'find_all'
但我知道不应该这样。
任何帮助将不胜感激。这是我的代码:
import urllib.request
from bs4 import BeautifulSoup as bs
import re
import pandas as pd
import requests
locations = ['las-vegas-nv','denver-co']
for location in locations:
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
}
url = 'https://www.apartments.com/{location}/1-bedrooms/'
page = requests.get(url, headers=headers)
soup = bs(page.text, 'lxml')
table = soup.find("table", class_="rentTrendGrid")
rows = []
for tr in table.find_all('tr'):
rows.append([td.text for td in tr.find_all(['th', 'td'])])
#header_row = rows[0]
rows = list(zip(*rows[0:])) # tranpose the table
df = pd.DataFrame(rows[1:], columns=rows[0])
df['City'] = location
dfs.append(df)
df = pd.concat(dfs).reset_index(drop = True)
print(df)
【问题讨论】:
-
你在
url = f'https://www.apartments.com/{location}/1-bedrooms/'中缺少f' ' -
太好了,我知道这会很简单......非常感谢!
标签: pandas loops beautifulsoup