在本文中,我们将构建一个程序,允许您使用 Python 脚本从网站上抓取或抓取数据。这种收集数据的方法称为网络抓取。 网页抓取就是使用 Python 或任何其他编程语言以编程方式下载、清理和使用网页中的数据。大多数网站不希望你抓取他们的数据,为了找出什么是合法的和允许抓取的,网站有一个专门的页面,显示允许的端点的详细信息。 将 robots.txt 附加到任何链接的末尾,以了解允许的端点。例如,让我们使用 。 https://news.ycombinator.com/robots.txt 使用下面的文本文件,结果应如下所示: 截图说明了我们被允许和不允许从 YCombinator 网站上抓取的端点。抓取延迟意味着在使用程序从网站抓取数据时暂停,从而不会因为不断抓取而导致其服务器超载并减慢网站速度。 在这个练习中,我们抓取新闻内容的主页,我们可以根据用户代理来完成。 入门 Python web scraper 需要两个必要的模块来抓取数据: 美丽的汤 要求 美丽的汤 Beautiful Soup 是一个 Python 库,用于从 HTML 文件中提取数据。它使用解析器修改文件,将数据转换为有价值的文档,并为程序员节省数小时的手动和重复性工作。 要求 requests HTTP 库用于使用带有 功能。 .get() 创建 Web Scraper 现在来看看这个项目的本质。创建一个新目录,并在其中创建一个文件,该文件将包含网络爬虫程序的所有脚本。 复制并粘贴以下代码: yc_web_page = response.text print(yc_web_page) # app.py import requests response = requests.get( 'https://news.ycombinator.com/news' ) 上面的代码执行以下操作: 导入 模块 requests 使用响应变量,附加到 功能从提供的网站链接下载 HTML 文件 .get() 阅读网页的内容 .text 如果您使用命令 python 运行此代码 它没有给你任何输出,这意味着需要安装两个导入的模块。 app.py 运行以下命令来安装模块。 pip install beautifulsoup4 pip3 install requests 源代码的结果应如下所示: 接下来,让我们更新 使用漂亮的汤与其余代码一起文件: app.py yc_web_page = response.text article_title = article_tag.get_text() result = { } print(result) # main.py import requests from bs4 import BeautifulSoup # add this response = requests.get( 'https://news.ycombinator.com/news' ) # add this soup = BeautifulSoup(yc_web_page, 'html.parser' ) article_tag = soup.find(name= "a" , class_= 'titlelink' ) article_link = article_tag.get( 'href' ) article_upvote = soup.find(name= "span" , class_= "score" ).get_text() "title" : article_title, "link" : article_link, "point" : article_upvote 按照上面的代码片段执行以下操作: 从模块 导入 BeautifulSoup 函数 bs4 接下来,使用变量soup从 使用 BeautifulSoup 功能和 获取 HTML 文件 yc_web_page html.parser 在浏览其余代码之前,让我们使用提供的链接打开我们的网络浏览器 .get() 接下来,在页面上右击,点击inspect,查看 新闻页面的elements选项卡。 YCombinator 我们的网页应该是这样的: 使用 Beautiful Soup,我们可以使用它们的类名来定位页面上的特定元素: 通过分配 article_tag 变量,每个页面元素都有一个标签名称,使用 具有元素名称、 标签和 带下划线。这样做是为了防止覆盖网页元素中的类 find() a class_ 现在,我们要提取的链接标题之一 使用 功能 article_tag .get_text() 接下来,提取链接 使用属性 与 功能 article_tag href .get() 这同样适用于 变量,其中标签名称, , 类名用于提取每篇文章链接的点数 article_upvote <span> 创建一个变量结果,将提取的数据显示为带有键和值对的字典 打印出最终结果 编写完整个脚本后,我们的页面应该会从 YCombinator 的新闻主页中抓取数据,如下所示: 结论 本文教你如何使用 Python 网络爬虫从网页中提取数据。 此外,使用网络抓取工具的功能还在于,它可以节省时间和精力来更快地而不是手动地生成大型数据集。 学到更多 美丽的汤文档 请求文件