【发布时间】:2022-01-17 13:59:34
【问题描述】:
感谢贡献者,他的代码高效且运行良好。有两个缺点,分别是:1)Tail_Number字段 没有准确捕捉。例如第一页 manuf/Boeing_Vertol.html Tail_Number 记录应为 01001。在第三页 /manuf/Boeing_Vertol:3.html 这些Tail_Number* 记录“5-4006”、“5-4054”、“5-4083”不应被捕获为类似日期的“May-4006”、“May-4054”、“May- 4083” 。 2) 如果可能的话,我想遍历 https://www.airport-data.com/manuf/09.html 到 https://www.airport-data.com/manuf/Z.html 并将每个 Aircraft by Manufacturer 转储到其自己的 .csv 文件中
import requests
import pandas as pd
from bs4 import BeautifulSoup as bs
from urllib.request import Request
headers = {
'accept':'*/*',
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36',
}
url = 'https://www.airport-data.com/manuf/Boeing_Vertol.html'
r = requests.get(url, headers=headers)
data = []
while True:
print(url)
html = requests.get(url)
soup = bs(html.text, 'html.parser')
data.append(pd.read_html(soup.select_one('table').prettify())[0])
if soup.select_one('li.active + li a[href]'):
url = soup.select_one('li.active + li a')['href']
else:
break
df = pd.concat(data)
df.to_csv("Boeing_Vertol.csv",encoding='utf-8-sig',index=False)
【问题讨论】:
-
如果代码有效并且您需要审查,您应该尝试Code Review,因为您的问题在这里是题外话。见what's on topic。
-
我投票结束这个问题,因为它属于Code Review。
-
不,代码在功能完成之前为not ready for review。
标签: python pandas csv web-scraping beautifulsoup