tool for work

python操控chrome抓网页

2019-01-28  本文已影响61人  何小有

通过chrome浏览器直接打开目标网站,然后直接抓取里面的前端代码,可以让我们不必分析、破解目标网站的接口加密规则,因为对于非目标网站的内部人员来说,这个工作可没有那么简单。

首先要了解的是,WebDriver是一个开源工具,用于跨多个浏览器自动测试Web应用程序,它提供了导航到网页、用户输入、JavaScript执行等功能。

Python的Selenium库是WebDriver的Python语言实现,用于浏览器交互的自动化。使用WebDriver进行自动化操作比较麻烦的地方是,使用什么浏览器就需要下载相应的driver文件,即浏览器驱动:

下面的内容使用的是Chrome驱动,Chrome驱动与Chrome浏览器有对应关系,具体映射关系可以在Chrome驱动目录下查看,但是最好的方法是更新Chrome至最新版本,再下载最新的Chrome驱动。

接下来我们在任意目录下创建一个tools123的文件夹,并把刚才下载的Chrome驱动放到这里来,再创建一个tools123.py的文件,在该文件下输入下面的代码:

from selenium import webdriver
from os import getcwd,sep

# 当前进程的工作目录
cwd = getcwd()
# 设置chrome驱动器
driver = webdriver.Chrome(f'{cwd}{sep}chromedriver')
# 设置超时时间
driver.set_page_load_timeout(13)

# 推出驱动并关闭所关联的所有窗口
driver.quit()

执行上面代码后,如果正常的话,电脑会打开一个Chrome浏览器窗口,然后又马上关闭了。下面我们可以试一下访问百度新闻并搜索关键词:

…………
from time import sleep

…………
…………
…………

# 访问
driver.get('http://news.baidu.com/')
# 等待几秒
sleep(3)

# 清空文本框的内容
driver.find_element_by_name('word').clear()
# 输入文本内容
driver.find_element_by_name('word').send_keys('百度')
# 点击按钮
driver.find_element_by_id("s_btn_wr").click()

# 等待几秒
sleep(3)

# 推出驱动并关闭所关联的所有窗口
driver.quit()

再执行一下代码,电脑打开Chrome浏览器窗口后,会访问百度新闻,然后输入“百度”,点击搜索按钮。接下来我们就可以爬页面的内容,不过我们还需要借助Python的Beautiful Soup库,它可以轻松从网页上抓取信息,提供用于迭代、搜索和修改解析树的功能。

下面我们就可以开始获取今天有关“百度”的热点新闻了:

…………
from bs4 import BeautifulSoup

…………
…………
…………

# 等待几秒
sleep(3)

# 获得网页内容
summaryPage = driver.page_source
# 解析HTML内容
summaryObj = BeautifulSoup(summaryPage, 'html.parser')
# 通过Class获取内容
summaryObjContent = summaryObj.find_all(attrs={'class':'c-title'})

for i in range(len(summaryObjContent)):
    # 查找出一个a标签
    aObj = summaryObjContent[i].find('a')
    # 查a标签的href值
    href = aObj['href']
    # 标签<a>中含有其他标签,用k.get_text()
    # strip()方法,去除字符串开头或者结尾的空格
    title = aObj.get_text().strip()
    
    print(title+'\n'+href+'\n')

# 推出驱动并关闭所关联的所有窗口
driver.quit()

最后上一个效果图哈!

效果图
上一篇下一篇

猜你喜欢

热点阅读