【问题标题】:Question on scraping bullet information from Wikipedia关于从维基百科抓取子弹信息的问题
【发布时间】:2021-04-20 23:00:14
【问题描述】:

希望这里的问题相当简单。我正在尝试从维基百科页面中抓取数据,最终使用 Python (Page here) 将其放入数据框中。具体来说,我试图将社区列表(不是在表格中,而是在页面上标出)放入一个空的数据框中。我正在使用 BeautifulSoup 并且可以到达我已经拉出我想要的维基百科页面部分的位置,但不能只获取社区的名称(而不是名称和网络链接)。以下是我目前所拥有的:

import requests
import pandas as pd
from bs4 import BeautifulSoup

df = pd.DataFrame(columns = ['Neighborhood', 'Latitude', 'Longitude'])

arlington_hoods = requests.get(": https://en.wikipedia.org/wiki/List_of_neighborhoods_in_Arlington_County,_Virginia")

soup = BeautifulSoup(arlington_hoods.content, 'lxml')

content = soup.find(id='bodyContent').find_all('li)

print(content)

运行后,输出如下所示:

<li>Alcova Heights</li>
<li><a href="/wiki/Arlington_Forest_Historic_District" title="Arlington Forest Historic District">Arlington Forest</a></li>
<li><a href="/wiki/Arlington_Heights_Historic_District" title="Arlington Heights Historic District">Arlington Heights</a></li>
<li><a href="/wiki/Arlington_Ridge,_Virginia" title="Arlington Ridge, Virginia">Arlington Ridge</a></li>
<li>Arlington View / Johnson's Hill</li>
<li><a href="/wiki/Ashton_Heights_Historic_District" title="Ashton Heights Historic District">Ashton Heights</a></li>
<li><a href="/wiki/Aurora_Highlands_Historic_District" title="Aurora Highlands Historic District">Aurora Highlands</a></li>
<li>Aurora Hills</li>...etc etc.

我只对将 Neighborhood 名称(Alvoa Heights、Arlington Forest...)而不是将偶尔的网络链接拉入 df DataFrame 的“Neighborhood”列感兴趣。

我认为我需要编写一个“for循环”才能通过,但我不确定下一步。

提前致谢!

【问题讨论】:

    标签: python dataframe web-scraping beautifulsoup wikipedia


    【解决方案1】:

    您可以遍历find_all() 的结果并从每个元素中获取text 属性。

    for element in content:
      print(element.text)
    

    【讨论】:

      【解决方案2】:
      import requests
      from bs4 import BeautifulSoup
      
      def Get_Neighborhood(url):
          res = requests.get(url)
          #The names in the first ul tag
          html_parsed = BeautifulSoup(res.text, 'html.parser').find('ul')
          html = BeautifulSoup(str(html_parsed), 'html.parser')
          out = []
          for x in html.find_all('li'):
              if x.string != None:
                  out.append(x.string)
          return (out)
      
      Neighborhoods = Get_Neighborhood('https://en.wikipedia.org/wiki/List_of_neighborhoods_in_Arlington_County,_Virginia')
      
      for x in Neighborhoods:
          print (x)
      

      【讨论】:

        猜你喜欢
        • 2020-07-16
        • 1970-01-01
        • 2015-06-25
        • 2019-05-24
        • 2020-09-23
        • 1970-01-01
        • 2020-07-27
        • 2020-07-20
        • 1970-01-01
        相关资源
        最近更新 更多