python抓取动态网页(使用selenium爬取动态网页信息Pythonselenium自动控制 )

优采云 发布时间: 2022-04-06 14:07

  python抓取动态网页(使用selenium爬取动态网页信息Pythonselenium自动控制

)

  使用selenium爬取动态网页信息

  python selenium自动控制浏览器抓取网页数据,包括按钮点击、页面跳转、搜索框输入、页面值数据存储、mongodb自动id识别等。

  首先介绍一下Python selenium——一个自动化测试工具,用来控制浏览器对网页的操作。当与爬虫中的 BeautifulSoup 结合使用时,它是无缝的。除了国外的一些异常验证页面,图片验证码我自己写了破解。图片验证码源码,成功率85%。

  使用 conda 管家安装:

  在cmd命令行输入“conda install selenium”进行安装

  还需要安装 Google Chrome Drive 或 Firefox 插件

  设置环境变量

  通过selenium访问百度

  from selenium import webdriver

#打开一个浏览器

browser = webdriver.Chrome()

#准备一个网址

url = 'http://www.baidu.com'

browser.get(url)

#获取元素

login = browser.find_elements_by_class_name('lb')[0]

print(login)

  获取网易云音乐

  

from selenium import webdriver

#打开浏览器

brower = webdriver.Chrome()

url='https://music.163.com/#/discover/toplist'

brower.get(url)

#寻找logo文字

#logo = brower.find_elements_by_class_name('logo')[0]

#print(logo.text)

#一般情况下动态加载的内容都可以找到

#有一种情况就没有

#就是网页内存在网页框架iframe

#需要切换网页的层级

#语法:brower.switch_to.frame(iframe的id或者你提前获取这个对象,放入此处)

#方法一:id

#brower.switch_to.frame('g_iframe')

#方法二:name

#brower.switch_to.frame('contentFrame')

#方法三:提前用变量存iframe

iframe = brower.find_element_by_id('g_iframe')

brower.switch_to.frame(iframe)

#寻找大容器

toplist = brower.find_element_by_id('toplist')

#寻找tbody 通过标签名

tbody = toplist.find_elements_by_tag_name('tbody')[0]

#寻找所有tr

trs = tbody.find_elements_by_tag_name('tr')

dataList = []

for each in trs:

#排名

rank = each.find_elements_by_tag_name('td')[0].find_elements_by_class_name('num')[0].text

musicName = each.find_elements_by_tag_name('td')[1].find_elements_by_class_name('txt')[0].\

find_element_by_tag_name('b').get_attribute('title')

#print(musicName)

singer = each.find_elements_by_tag_name('td')[3].find_elements_by_class_name('text')[0].\

get_attribute('title')

#print(singer)

dataList.append([rank,musicName,singer])

#print(dataList)

from openpyxl import Workbook

wb = Workbook()

ws = wb.active

ws.title = '云音乐飙升榜'

ws.append(['排名','歌名','歌手'])

for data in dataList:

ws.append(data)

wb.save("云音乐飙升榜.xlsx")

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线