【发布时间】:2021-12-23 01:23:25
【问题描述】:
import requests
from bs4 import BeautifulSoup
import pandas as pd
baseurl='https://locations.atipt.com/'
headers ={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'
}
r =requests.get('https://locations.atipt.com/al')
soup=BeautifulSoup(r.content, 'html.parser')
tra = soup.find_all('ul',class_='list-unstyled')
productlinks=[]
for links in tra:
for link in links.find_all('a',href=True):
comp=baseurl+link['href']
productlinks.append(comp)
temp=[]
for link in productlinks:
r =requests.get(link,headers=headers)
soup=BeautifulSoup(r.content, 'html.parser')
tag=soup.find_all('div',class_='listing content-card')
for pro in tag:
for tup in pro.find_all('p'):
temp.append([text for text in tup.stripped_strings])
df = pd.DataFrame(temp)
print(df)
这是我得到的输出
9256 Parkway E Ste A
Birmingham,
Alabama 35206
但我不知道如何在数据框中给出名称我将名称address 给9256 Parkway ESte A 和City 给 Birmingham 和state 给ALabama 35206 如果可能的话,请帮助这些问题
【问题讨论】:
-
如果你的数据
temp一直有address、city和state元素的顺序相同,你可以使用df = pd.DataFrame(temp, columns=['address', 'city', 'state']) -
给出论文错误
ValueError: 3 columns passed, passed data had 1 columns -
这是因为
DataFrame需要一个列表列表,其中包含每列的元素。在你的情况下是 3。
标签: python dataframe web-scraping beautifulsoup