千家信息网

怎么用Python爬虫获取国外大桥排行榜数据清单

发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,这篇文章主要介绍"怎么用Python爬虫获取国外大桥排行榜数据清单",在日常操作中,相信很多人在怎么用Python爬虫获取国外大桥排行榜数据清单问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作
千家信息网最后更新 2024年11月18日怎么用Python爬虫获取国外大桥排行榜数据清单

这篇文章主要介绍"怎么用Python爬虫获取国外大桥排行榜数据清单",在日常操作中,相信很多人在怎么用Python爬虫获取国外大桥排行榜数据清单问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么用Python爬虫获取国外大桥排行榜数据清单"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

前言:

正式开始前,先安装 pyquery 到本地开发环境中。命令如下:pip install pyquery ,我使用的版本为 1.4.3

基本使用如下所示,看懂也就掌握了 5 成了,就这么简单。

from pyquery import PyQuery as pqs = '橡皮擦的PyQuery小课堂'doc = pq(s)print(doc('title'))

输出如下内容:

橡皮擦的PyQuery小课堂

也可以直接将要解析的网址 URL 传递给 pyquery 对象,代码如下所示:

from pyquery import PyQuery as pqurl = "https://www.bilibili.com/"doc = pq(url=url,encoding="utf-8")print(doc('title')) # 哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

相同的思路,还可以通过文件初始化 pyquery 对象,只需要修改参数为 filename 即可。

基础铺垫过后,就可以进入到实操环节,下面是本次要抓取的目标案例分析。

目标站点分析

本次要采集的为 :List of Highest International Bridges(最高国际桥梁名单),

页面呈现的数据如下所示:

在翻阅过程中发现多数都是中国设计的,果然我们基建世界第一。

翻页规则如下所示:

http://www.highestbridges.com/wiki/index.php?title=List_of_Highest_International_Bridges/Page_1
http://www.highestbridges.com/wiki/index.php?title=List_of_Highest_International_Bridges/Page_2
# 实测翻到第 13 页数据就空了,大概1200座桥梁
http://www.highestbridges.com/wiki/index.php?title=List_of_Highest_International_Bridges/Page_13

由于目标数据以表格形式存在,故直接按照表头提取数据即可。 Rank,Name,Height (meters / feet),Main Span Length,Completed,Location,Country

编码时间

正式编码前,先拿第一页进行练手:

from pyquery import PyQuery as pqurl = "http://www.highestbridges.com/wiki/index.php?title=List_of_Highest_International_Bridges/Page_1"doc = pq(url=url, encoding='utf-8')print(doc('title'))def remove(str):    return str.replace("", "").replace("\n", "")# 获取所有数据所在的行,下面使用的是 css 选择器,称作 jquery 选择器也没啥问题items = doc.find('table.wikitable.sortable tr').items()for item in items:    td_list = item.find('td')    rank = td_list.eq(1).find("span.sorttext").text()    name = td_list.eq(2).find("a").text()    height = remove(td_list.eq(3).text())    length = remove(td_list.eq(4).text())    completed = td_list.eq(5).text()    location = td_list.eq(6).text()    country = td_list.eq(7).text()    print(rank, name, height, length, completed, location, country)

代码整体写下来,发现依旧是对于选择器的依赖比较大,也就是需要熟练的操作选择器,选中目标元素,方便获取最终的数据。

将上述代码扩大到全部数据,修改成迭代采集:

from pyquery import PyQuery as pqimport timedef remove(str):    return str.replace("", "").replace("\n", "").replace(",", ",")def get_data(page):    url = "http://www.highestbridges.com/wiki/index.php?title=List_of_Highest_International_Bridges/Page_{}".format(        page)    print(url)    doc = pq(url=url, encoding='utf-8')    print(doc('title'))    # 获取所有数据所在的行,下面使用的是 css 选择器,称作 jquery 选择器也没啥问题    items = doc.find('table.wikitable.sortable tr').items()    for item in items:        td_list = item.find('td')        rank = td_list.eq(1).find("span.sorttext").text()        name = remove(td_list.eq(2).find("a").text())        height = remove(td_list.eq(3).text())        length = remove(td_list.eq(4).text())        completed = remove(td_list.eq(5).text())        location = remove(td_list.eq(6).text())        country = remove(td_list.eq(7).text())        data_tuple = (rank, name, height, length, completed, location, country)        save(data_tuple)def save(data_tuple):    try:        my_str = ",".join(data_tuple) + "\n"        # print(my_str)        with open(f"./data.csv", "a+", encoding="utf-8") as f:            f.write(my_str)            print("写入完毕")    except Exception as e:        passif __name__ == '__main__':    for page in range(1, 14):        get_data(page)        time.sleep(3)

其中发现存在英文的逗号,统一进行修改,即 remove(str) 函数的应用。

到此,关于"怎么用Python爬虫获取国外大桥排行榜数据清单"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

数据 选择 大桥 排行榜 清单 爬虫 目标 学习 代码 问题 对象 所在 更多 桥梁 橡皮 橡皮擦 编码 课堂 utf-8 分析 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 同兴万点网络技术有限公司 E领网络安全海报 微商城 软件开发 网络安全防护怎么关闭手机 app 网络安全方案 数据库事务知识点总结 用vbs按照数据库批量生成 天津软件开发培训机构有哪些 山西放心软件开发服务品质保障 岳阳软件开发哪里的好 北京数据库运维工程师工作招聘 营火互联网科技有限公司 华为5g网络技术研发人员 幼儿园网络安全实施措施 我的世界服务器生存需要注意什么 马云计算机网络技术有限公司 cod18与服务器连接中断 莱芜pc软件开发公司有哪些 常德软件开发中专学校 怎么自动生成按天数据库 网络安全需要有什么基础知识 国家净化网络安全管理的 战神引擎更换数据库密码 zabbix服务器配置 华为软件开发任职资格标准 厦门软件开发人员工资待遇 软件开发注册流程详解 固网打印服务器 客服 网络安全方案怎么拍照 从事isv软件开发的公司
0