用 BeautifulSoup 抓取后提取单词
Posted
技术标签:
【中文标题】用 BeautifulSoup 抓取后提取单词【英文标题】:extract word from after scraping with BeautifulSoup 【发布时间】:2021-11-20 11:20:42 【问题描述】:我在网页中使用 BeautifulSoup4 收集了一些信息:https://www.peakbagger.com/list.aspx?lid=5651
from urllib.request import urlopen
from bs4 import BeautifulSoup
import pandas as pd
url = 'https://www.peakbagger.com/list.aspx?lid=5651'
html = urlopen(url)
soup = BeautifulSoup(html, 'html.parser')
row = soup.find('tr')
row
rows = soup.find_all('tr')
for row in rows:
print(row.get_text())
我想打印单词,以便每个单词都可以显示在每个不同的部分中,例如
之前:
1.富士山关东3776山梨县/静冈县本州3776318
2.北岳中部3192山梨县本州223731
之后:
(a= )
富士山
北岳
...
(b=)
关东
中部
...
(c=)
3776
3192
...
对于从 1. 到 100 的每一行。
我应该使用 for 循环还是拆分来打断每个单词?
谢谢。
【问题讨论】:
我相信这就是你想要的***.com/questions/23377533/… 嗨,我试过了,但我认为它给了我一个错误,'str' object has no attribute 'append' 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:试试这些:
import requests
from bs4 import BeautifulSoup
import pandas as pd
headers =
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.3"
r = requests.get("https://www.peakbagger.com/list.aspx?lid=5651")
soup = BeautifulSoup(r.content, "lxml")
table = soup.find("table", class_="gray")
header = [th.get_text(strip=True) for th in table.tr.select("th")][1:]
header.insert(0, 'S.No')
all_data = []
for row in table.select("tr:has(td)"):
tds = [td.get_text(strip=True) for td in row.select("td")]
all_data.append(tds)
df = pd.DataFrame(all_data, columns=header)
print(df)
df.to_csv("data.csv", index=False)
输出:
S.No Peak Section ... Range (Level 3) Prom-M Ascents
0 1. Fuji-san Kanto ... Honshu 3776 318
1 2. Kita-dake Chubu ... Honshu 2237 31
2 3. Hotaka-dake Chubu ... Honshu 2305 23
3 4. Aino-dake Chubu ... Honshu 299 17
4 5. Yariga-take Chubu ... Honshu 432 29
.. ... ... ... ... ... ... ...
95 96. Meakan-dake Hokkaido ... Hokkaido 1147 7
96 97. Amagi-san Chubu ... Honshu 1004 14
97 98. Ibuki-yama Western Japan ... Honshu 657 8
98 99. Kaimon-dake Western Japan ... Kyushu 867 9
99 100. Tsukuba-san Kanto ... Honshu 797 20
【讨论】:
您好,感谢您的回复。如果我只需要前 4 列怎么办? 我修改了4列的代码 也许,我应该改写吗?我希望只得到 no., peak, section 和 elev 列。有什么办法可以删除其余的吗? 是的,有可能 只是另一个问题,我如何获得每个链接的纬度和经度?以上是关于用 BeautifulSoup 抓取后提取单词的主要内容,如果未能解决你的问题,请参考以下文章
使用python和beautifulsoup4抓取网页后重复数据
在 BeautifulSoup 抓取之后从 Python 中的列表中提取数据,并创建 Pandas 表
尝试使用 BeautifulSoup 从我的代码中使用 Xpath 进行网络抓取 [重复]