python网页数据抓取(HowtoWebScrapewithPythonin4翻译|M.Y.Li校对|就2)
优采云 发布时间: 2021-09-30 04:32python网页数据抓取(HowtoWebScrapewithPythonin4翻译|M.Y.Li校对|就2)
本文为AI研究院整理的技术博客,原标题:
如何在 4 分钟内使用 Python 进行网页抓取
翻译 | MY Li 校对 | 只是 2 整理 | 菠萝女孩
原文链接:
/how-to-web-scrape-with-python-in-4-minutes-bc49186a8460
图片来自 /free-photos/illustration-english-window-blue-sky-clouds-41409346
网页抓取是一种自动访问网站并提取大量信息的技术,可以节省大量的时间和精力。在本文中,我们将使用一个简单的示例来说明如何从纽约 MTA 自动下载数百个文件。对于想要学习如何进行网页抓取的初学者来说,这是一个很好的练习。网页抓取可能有点复杂,因此本教程将分解教学步骤。
纽约 MTA 数据
我们将从这个网站下载纽约公共交通地铁站旋转门的数据:
/developers/turnstile.html
从2010年5月到现在,这些旋转门的数据每周汇总,所以网站上有数百个.txt文件。下面是一些数据片段,每个日期都是一个可下载的 .txt 文件的链接。
手动右击每个链接并保存在本地会很费力,幸好我们有网络爬虫!
关于网络爬行的重要说明:
1. 仔细阅读网站的条款和条件,了解如何合法使用这些数据。大多数网站 禁止您将数据用于商业目的。
2. 确保您下载数据的速度不要太快,因为这可能会导致 网站 崩溃,并且您也可能无法访问网络。
检查 网站
我们需要做的第一件事是弄清楚如何从多级 HTML 标记中找到我们要下载的文件的链接。总之,网站页面代码很多,我们希望能找到收录我们需要的数据的相关代码片段。如果您不熟悉 HTML 标签,请参阅 W3schools 教程。为了成功抓取网页,了解 HTML 的基础知识很重要。
在网页上右键单击,然后单击“检查”,可以查看站点的原创代码。
单击“检查”后,您应该会看到此控制台弹出。
安慰
请注意,控制台左上角有一个箭头符号。
如果单击此箭头,然后单击网站 本身的区域,控制台将突出显示该特定项目的代码。我单击了第一个数据文件,即 2018 年 9 月 22 日星期六,控制台突出显示了指向该特定文件的链接。
<a href=”data/nyct/turnstile/turnstile_180922.txt”>Saturday, September 22, 2018</a>
请注意,所有 .txt 文件都在
在上一行的标记内。当你做更多的网络爬虫时,你会发现
用于超链接。
现在我们已经确定了链接的位置,让我们开始编程吧!
Python代码
我们首先导入以下库。
import requests
import urllib.request
import time
from bs4 import BeautifulSoup
接下来,我们将 url 设置为目标 网站 并使用我们的请求库访问该站点。
url = ‘
response = requests.get(url)
如果访问成功,您应该看到以下输出:
接下来,我们使用 html 嵌套数据结构。如果您有兴趣了解有关此库的更多信息,请查看 BeautifulSoup 文档。
soup = BeautifulSoup(response.text, “html.parser”)
我们使用 .findAll 方法来定位我们所有的
标记。
此代码已找到所有
标记的代码片段。我们感兴趣的信息从第36行开始,并不是所有的链接都是我们想要的,但大部分都是,所以我们可以很容易地从36行中分离出来。下面是我们输入上述代码时BeautifulSoup返回给我们的部分信息.
所有标记的子集
接下来,让我们提取我们想要的实际链接。先测试第一个链接。
one_a_tag = soup.findAll(‘a’)[36]
link = one_a_tag[‘href’]
此代码将'data/nyct/turnstile/turnstile_le_180922.txt 保存到我们的变量链接。下载数据的完整网址实际上是“/developers/data/nyct/turnstile/turnstile_180922.txt”,我通过单击网站 上的第一个数据文件作为测试找到了这一点。我们可以使用 urllib.request 库将此文件路径下载到我们的计算机。我们为 request.urlretrieve 提供 ve 并提供两个参数:文件 url 和文件名。对于我的文件,我将它们命名为“turnstile_le_180922.txt”、“t”、“turnstile_180901”等。
download_url = ‘http://web.mta.info/developers/'+ link
urllib.request.urlretrieve(download_url,’./’+link[link.find(‘/turnstile_’)+1:])
最后但并非最不重要的是,我们应该收录以下代码行,以便我们可以暂停代码运行一秒钟,这样我们就不会通过请求向 网站 发送垃圾邮件,这有助于我们避免被标记为垃圾邮件发送者.
time.sleep(1)
现在我们已经了解了如何下载文件,让我们尝试使用 网站 来捕获旋转门数据的完整代码集。
# Import libraries
import requests
import urllib.request
import time
from bs4 import BeautifulSoup
# Set the URL you want to webscrape from
url = 'http://web.mta.info/developers/turnstile.html'
# Connect to the URL
response = requests.get(url)
# Parse HTML and save to BeautifulSoup object¶
soup = BeautifulSoup(response.text, "html.parser")
# To download the whole data set, let's do a for loop through all a tags
for i in range(36,len(soup.findAll('a'))+1): #'a' tags are for links
one_a_tag = soup.findAll('a')[i]
link = one_a_tag['href']
download_url = 'http://web.mta.info/developers/'+ link
urllib.request.urlretrieve(download_url,'./'+link[link.find('/turnstile_')+1:])
time.sleep(1) #pause the code for a sec
你可以在我的 Github 上找到我的 Jupyter 笔记。感谢阅读,如果你喜欢这个文章,请尽量点击Clap按钮。
祝你网络爬行愉快!
想继续查看本文的相关链接和参考资料吗?
戳链接:
gair.link/page/TextTranslation/1120
AI研究院每日更新精彩内容:
良心推荐:20周计算机科学体验帖(附资源)
多目标跟踪器:使用OpenCV实现多目标跟踪(C++/Python)
为计算机视觉生成大型、合成、带注释和真实的数据集
致敬保罗艾伦,除了他的科技圈,还有谁值得相信?
等你翻译:
揭秘深度网络:防止过度拟合与活动识别相关的新数据集使用 Excel 解释什么是多层卷积以及如何开发用于多步空气污染时间序列预测的自回归预测模型
额外的昵称~
如果想获得更多与AI领域相关的学习资源,可以访问AI研究会资源版块下载,
所有资源目前都是限时免费的。欢迎来到社区资源中心
gair.link/page/resources 下载~
/page/ClassificationPage/10(自动识别二维码)