【问题标题】:How to extract data from a list of Urls for web scraping如何从 URL 列表中提取数据以进行网络抓取
【发布时间】:2020-08-07 14:56:41
【问题描述】:

我是 Web 抓取的新手,我想从通过 URL 访问的 <div> 标记中提取 坐标。有一个 URL 列表,我想从中提取坐标并将它们保存在 CSV 文件中。

 <div class="single-view-data-row">
 <div class="single-view-data-title">Coordinates</div>
 <div class="single-view-data-get">
                                 17.009164 N, -90.309259 E<br/><a href="http://geographiclib.sourceforge.net/cgi-bin/GeoConvert?input=17.009164+-90.309259" target="_blank">»» UTM / MGRS</a></div></div></div>

感谢您的帮助!!!

【问题讨论】:

  • 我不太明白您的意思,您正在显示一个包含经度和纬度以及链接的 div 列表。你想要div的经度和纬度吗?但后来你提到你已经成功提取了 url,所以我想你想在经度/纬度 div 中抓取 url?还是要从 url 中提取 input=17.009164+-90.309259
  • 我抓取了 URL 列表,并从其中一个页面中得到了这个 HTML 文本。我想要来自 div 标签和 URL 中的每个链接的坐标。无论是从 URL 还是从 div 标签中提取,两者都可以工作。

标签: web-scraping beautifulsoup python-requests


【解决方案1】:

要从此 HTML 文本中提取链接和坐标,您可以使用以下脚本:

from bs4 import BeautifulSoup

txt = ''' <div class="single-view-data-row">
 <div class="single-view-data-title">Coordinates</div>
 <div class="single-view-data-get">
                                 17.009164 N, -90.309259 E<br/><a href="http://geographiclib.sourceforge.net/cgi-bin/GeoConvert?input=17.009164+-90.309259" target="_blank">»» UTM / MGRS</a></div></div></div>
'''

soup = BeautifulSoup(txt, 'html.parser')

link = soup.select_one('.single-view-data-get a')['href']
coords = soup.select_one('.single-view-data-get').find_next(text=True).split(',')

print(link)
print(coords[0].strip())
print(coords[1].strip())

打印:

http://geographiclib.sourceforge.net/cgi-bin/GeoConvert?input=17.009164+-90.309259
17.009164 N
-90.309259 E

【讨论】:

    猜你喜欢
    • 2021-09-05
    • 1970-01-01
    • 2017-08-04
    • 2021-10-27
    • 2017-12-30
    • 1970-01-01
    • 2017-12-30
    • 2023-03-06
    • 2021-08-20
    相关资源
    最近更新 更多