python爬取中国大学排名,Python爬虫爬取中国大学排名
本文主要介绍Python爬虫对国外桥牌排行榜的获取。文章通过PyQuery解析框架展开全文细节,需要的朋友可以参考一下。
00-1010目标站点分析编码时间前言:
这个例子开始学习PyQuery解析框架,对于从前端转Python的朋友来说非常友好,因为它模拟了JQuery操作。
在开始之前,将pyquery安装到本地开发环境中。命令如下:pip安装pyquery,我用的版本是1.4.3。
用法基本如下。理解了,就能掌握50%。就这么简单。
从pyquery导入PyQuery作为pq
s= py query html title eraser/title/html的课堂
doc=pq(s)
打印(文档(标题))
输出如下内容:
PyQuery标题橡皮擦/标题教室
也可以直接把要解析的URL的URL传递给pyquery对象代码如下所示:.
从pyquery导入PyQuery作为pq
url=https://www.bilibili.com/
doc=pq(url=url,编码=utf-8 )
打印(doc( title )# titlecheers ~-哔哩哔哩/title
同理,也可以通过文件初始化pyquery对象,只需将参数改为filename即可。
基础打好之后,就可以进入实操环节了。下面是这次要捕捉的目标案例分析。
目录
本次要采集的为 :,最高的国际桥梁列表
页面呈现的数据如下所示:
翻阅了一下,发现大部分都是中国设计的。果然,我们的基础设施是世界第一。
翻页规则如下所示:
http://www.highestbridges.com/wiki/index.php?title=List _ of _ higher _ International _ Bridges/Page _ 1
http://www.highestbridges.com/wiki/index.php?title=List _ of _ higher _ International _ Bridges/Page _ 2
#实测数据翻到第13页是空的,大约1200座桥。
http://www.highestbridges.com/wiki/index.php?title=List _ of _ higher _ International _ Bridges/Page _ 13
由于目标数据是以表格的形式存在的,所以只需要直接根据表头提取数据即可。等级,名称,高度(米/英尺),主要跨度长度,完成,位置,国家
目标站点分析
正式编码前,先拿第一页进行练手:
从pyquery导入PyQuery作为pq
URL= http://www . highest bridges.com/wiki/index . PHP? title=List _ of _ Highest _ International _ Bridges/Page _ 1
doc=pq(url=ur
l, 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 time
def 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:
pass
if __name__ == __main__:
for page in range(1, 14):
get_data(page)
time.sleep(3)
其中发现存在英文的逗号,统一进行修改,即remove(str)
函数的应用。
到此这篇关于Python爬虫获取国外大桥排行榜数据清单的文章就介绍到这了,更多相关Python数据清单内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。