我正试图从https://en.wikipedia.org/wiki/Megacity中提取表,作为我对刮片世界的第一次尝试(在完全透明的情况下,我从我阅读的博客中获取了这段代码)。我得到了项目,但我没有得到城市,而是在每个领域都得到了。 问题:为什么每个字段的结尾都有\n,为什么我的第一个字段(城市)为空?下面列出的是部分代码和输出
import requests
scrapeLink = 'https://en.wikipedia.org/wiki/Megacity'
page = requests.get(scrapeLink)
from bs4 import BeautifulSoup
soup = BeautifulSoup(page.content, 'html.parser')
megaTable = soup.find_all('table')[1]
rowValList = []
for i in range(len(megaTable.find_all('td'))):
rowVal = megaTable.find_all('td')[i].get_text()
rowValList.append(rowVal)
cityList = []
for i in range(0, len(rowValList), 6):
cityList.append(rowValList[i])
countryList = []
for i in range(1, len(rowValList), 6):
countryList.append(rowValList[i])
contList = []
for i in range(2, len(rowValList), 6):
contList.append(rowValList[i])
popList = []
for i in range(3, len(rowValList), 6):
popList.append(rowValList[i])
import pandas as pd
megaDf = pd.DataFrame()
megaDf['City'] = cityList
megaDf['Country'] = countryList
megaDf['Continent'] = contList
megaDf['Population'] = popList
megaDf
原因是城市不是在
td
标签内,而是在th
标签内你提到的第一个td实际上是image列。您可以通过获取
th
标记来选择城市名称此外,您可以通过首先获取表中的行,然后为每一行选择必要的标记来简化爬虫程序,即
th
和td
然后,您可以将列表转换为数据帧:
相关问题 更多 >
编程相关推荐