中车网站建设的优缺点酒店网站建设的构思
web/
2025/9/27 10:13:19/
文章来源:
中车网站建设的优缺点,酒店网站建设的构思,湘潭网站建设方案表格,h5制作平台官网免费一、说明 本周我不得不为客户抓取一个网站。我意识到我做得如此自然和迅速#xff0c;分享它会很有用#xff0c;这样你也可以掌握这门艺术。【免责声明#xff1a;本文展示了我的抓取做法#xff0c;如果您有更多相关做法请在评论中分享】
二、计划策略
2.1 策划
确定您… 一、说明 本周我不得不为客户抓取一个网站。我意识到我做得如此自然和迅速分享它会很有用这样你也可以掌握这门艺术。【免责声明本文展示了我的抓取做法如果您有更多相关做法请在评论中分享】
二、计划策略
2.1 策划
确定您的目标一个简单的 html 网站在 Python 中设计抓取方案 跑起代码让魔术运转 您需要多少时间来抓取网站从业者需要~10分钟为一个简单的html网站准备Python脚本。
2.2 第一部分找到你的目标一个网站 就我而言我需要从 SWIFT 代码或法国 BIC 代码中收集银行名称。该网站 http://bank-code.net/country/FRANCE-%28FR%29.html 有一个4000 SWIFT代码的列表以及相关的银行名称。问题是它们每页仅显示 15 个结果。浏览所有页面并一次复制粘贴 15 个结果不是一种选择。刮擦在这项任务中派上了用场。 首先使用Chrome“检查”选项来确定您需要获取的html部分。将鼠标移动到检查窗口中的不同项目上右侧然后跟踪代码突出显示的网站部分左侧。选择项目后在检查窗口中使用“复制/复制元素”并将 html 代码粘贴到 python 编码工具中。 右侧是谷歌浏览器的“检查窗口”您在使用右键单击/检查时获得 就我而言具有 15 个 SWIFT 代码的所需项目是一个“表” table classtable table-hover table-bordered idtableID stylemargin-bottom: 10px;
/table 2.3 第二部分在 Python 中设计抓取方案
ascrape第一页 import requests
url http://bank-code.net/country/FRANCE-%28FR%29/
page requests.get(url)
就是这样3行代码和Python已经收到了网页。现在您需要正确解析html并检索所需的项目。
记住所需的 html table classtable table-hover table-bordered idtableID stylemargin-bottom: 10px;
/table 它是一个“table”元素id为“tableID”。它有一个id属性的事实很好因为这个网页上没有其他html元素可以有这个id。这意味着如果我在 html 中查找此 id除了所需的元素之外我找不到任何其他内容。它节省了时间。
让我们在 Python 中正确地做到这一点 import bs4
soup bs4.BeautifulSoup(page.content, lxml)
table soup.find(nametable, attrs{id:tableID}) 所以现在我们得到了所需的 html 元素。但是我们仍然需要获取 html 中的 SWIFT 代码然后将其存储在 Python 中。我选择把它存放在熊猫里。数据帧对象但只有一个列表列表也可以解决。
为此请返回Chrome检查窗口分析html树的结构并注意您必须转到哪个元素。就我而言所需的数据位于“tbody”元素中。每个银行及其SWIFT代码都包含在一个“tr”元素中每个“tr”元素有多个“td”元素。“td”元素包含我正在寻找的数据。 html 树可以描述如下table tbody tr td
我在一行中做到了如下所示 result pd.DataFrame([[td.text for td in row.findAll(td)] for row in table.tbody.findAll(tr)])b 准备自动化 现在我们已经抓取了第一个网页我们需要考虑如何抓取我们尚未看到的新网页。我这样做的方法是复制人类行为存储一页的结果然后转到下一页。现在让我们专注于下一个网页。 在页面底部有一个菜单允许您进入 swift 代码表的特定页面。让我们检查检查器窗口中的“下一页”按钮。 “”符号将引导我们进入下一页
这给出了以下 html 元素 a href//bank-code.net/country/FRANCE-%28FR%29/15 data-ci-pagination-page2 relnextgt;/a现在在 Python 中获取 url 很简单 http: soup.find(a, attrs{rel:next}).get(href) 我们快到了。 到目前为止我们已经 - 开发了一页表格的抓取 - 确定了下一页 的 url 链接
我们只需要做一个循环然后运行代码。我建议遵循以下两种最佳实践
1. 登陆新网页时打印出来知道您的代码处于流程的哪个阶段抓取代码可以运行数小时
2.定期保存结果避免在出现错误时丢失所有抓取的内容
只要我不知道何时停止抓取我就会使用惯用的“while True”语法循环。我在每一步打印出计数器值。而且我也在每一步将结果保存在csv文件中。这实际上可能会浪费时间例如更好的方法是每 10 或 20 步存储一次数据。但我追求快速实施。
三、完整代码
代码是这样的 import os, bs4, requests
import pandas as pdPATH os.path.join(C:\\,Users,xxx,Documents,py) # you need to change to your local path
res pd.DataFrame()
url http://bank-code.net/country/FRANCE-%28FR%29/
counter 0def table_to_df(table): return pd.DataFrame([[td.text for td in row.findAll(td)] for row in table.tbody.findAll(tr)])def next_page(soup): return http: soup.find(a, attrs{rel:next}).get(href)while True:print(counter)page requests.get(url)soup bs4.BeautifulSoup(page.content, lxml)table soup.find(nametable, attrs{id:tableID})res res.append(table_to_df(table))res.to_csv(os.path.join(os.path.join(PATH,table.csv)), indexNone, sep;, encodingiso-8859–1)url next_page(soup)counter 1 完整的代码只有26行可以在这里找到https://github.com/FelixChop/MediumArticles/blob/master/Scraping_SWIFT_codes_Bank_names.py
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81161.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!