python抓取动态网页(爬取网页思路的改变–selenuim的介绍和基本使用在爬虫领域)

优采云 发布时间: 2021-09-11 12:09

  python抓取动态网页(爬取网页思路的改变–selenuim的介绍和基本使用在爬虫领域)

  抓取网页的思路变化-selenuim的介绍和基本使用

  在爬虫领域,网页可以分为主要内容全部出现在HTML中的[静态网页]和需要通过执行JavaScript来显示主题内容的[动态网页]。

  假设爬虫程序需要爬取:2020中国大学排名

  访问网站时,会发现点击第二页、第三页...时,页面部分刷新,URL不会改变。这时候使用[requests]库访问,* *只获取*第一页的数据,后面18页是不可用的。

  这时候就需要了解:爬虫、浏览器和WebDriver的关系,可以浏览相关网页,这里不再赘述。 . .

  以下是重点:

  Selenium 是一个程序。国外大神团队打造的“轮子”本质上是一个成熟稳定的WebDriver程序,并在此基础上提供了丰富的功能。它也是一个开源浏览器自动化项目,提供了一组命令接口。我们可以用它向浏览器发送指令,浏览器会执行特定的操作。网页渲染完成后,会抓取对应的字段。

  传送门:(*敏*感*词*下载地址)

  温馨提示:开始练习前,请按照Selenium官方文档安装Selenium,并下载相应的浏览器WebDriver。

  元素定位方法(如下图1):

  

  以下爬取了本网站所有涉及[校名,如清华大学等]的567所学校。

  只需导入两个包。 . .

  有效代码少于 30 行。 .

  可以自己练习,基础语法,欢迎在评论区留言,有很多注意事项才可以写(看到留言会回复~~)。

  简介:

  导入selenium库,xlwt库(可选);定义一个函数parselweb,传入两个参数,url和school_info;驱动浏览器,打开url链接,css_selector选择器找到网页页码对应的css元素(如图)2),设置为制造循环(从嵌套的if语句中去掉页面“0”;(调用方法:find_element_by_css_selector(),没有s的元素)嵌套for循环,css_selector选择器遍历页面所有类=“div>.name-cn”,调用text提取文本;(调用方法:find_elements_by_css_selector())school_info调用append () 方法依次添加字符串文本,print() 打印列表元素。

  

  所有代码如下:

  from selenium import webdriver

import xlwt

#1.【selenium模块】遥控win10自带的Edge浏览器打开指定网页;

#2.查看页面共19页,撇去数字“0”,开始循环点击网页;

#3.每次点击一个网页页码,则使用【css选择器】定位指定【字段】 并提取出来存入变量 school_info;

#4.【xlwt模块】写入数据

def parselweb(url,school_info):

driver = webdriver.Edge(executable_path='msedgedriver.exe')

driver.get(url)

for i in range(20):

if i == 0:

pass

else:

driver.find_element_by_css_selector(".ant-pagination-item.ant-pagination-item-" + str(i)).click()

text1 = driver.find_elements_by_css_selector("div>.name-cn")

for ii in text1:

school_name_cn = ii.text

school_info.append(school_name_cn)

print(school_info)

print("接下来将数据传入Excel")

return school_info

def xlsbook(school_info):

xls = xlwt.Workbook()

sheet = xls.add_sheet("最好大学排名")

for val in range(len(school_info)):

sheet.write(val,0,school_info[val])

xls.save("d:/zuimeidaxue02.xls")

def main():

school_info = []

url = "https://www.shanghairanking.cn/rankings/bcur/2020"

parselweb(url,school_info)

xlsbook(school_info)

main()

  运行后附上结果:

  

  

  待更新。 . .

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线