python自动打开网页_Python控制浏览器,自动获取网页数据

【新手任务】

老板:我们做海外市场的,搞定投资商很重要。你去把境外投资企业(机构)全部给我复制下来。

6ec0c4ac620a

任务.png

总共2606页,点下一页,然后再ctrl+C,然后Ctrl+V,准备着复制到天亮吧。扫视一圈,新来的实习生都回学校做毕业论文了。

【解决方案】

知识点:Python 3 基本语法,splinter库和xpath基本知识

Case 1:

python利用splinter库,控制chrome浏览器,打开网页,获取数据。抓取境外投资企业(机构)名录。

分析思路:

Step 1: 安装splinter

百度 splinter 安装,建议安装anaconda(python常用库就基本有了),再安装splinter

Step 2: 利用splinter打开chrome,访问链接

from splinter import Browser

browser = Browser('chrome') #打开谷歌浏览器

browser.visit('http://femhzs.mofcom.gov.cn/fecpmvc/pages/fem/CorpJWList.html') #访问链接

6ec0c4ac620a

打开谷歌浏览器,访问链接.png

Step 3: 获取信息

在网页空白处,点击右键,选择“检查”。然后,在出现的功能框中,用鼠标点击选择元素

6ec0c4ac620a

检查.png

点击了选择元素之后,按钮变为蓝色(我是色盲,也是许是蓝色吧)。然后,所鼠标移动到网页上,你要获取获取的信息上,然后单击。

6ec0c4ac620a

选择要复制的数据.png

然后,将鼠标移动到功能框中,你需要获取的信息上,然后点击右键-复制-XPath。这样就获得了该元素在网页中的地址。

6ec0c4ac620a

复制XPath.png

代码如下:

# 通过谷歌浏览器的检查功能,可以很迅速地获取所需元素的地址。

# find_by_xpath(XPath地址) 返回值是储存在列表中的

# 这里是只有一个元素的列表,所以要选择列表第一个元素的值

r1c1=browser.find_by_xpath('//*[@id="foreach"]/td[1]').first.value # 取得1行1列的值

r1c2=browser.find_by_xpath('//*[@id="foreach"]/td[2]').first.value # 取得1行2列的值

r1c3=browser.find_by_xpath('//*[@id="foreach"]/td[3]').first.value# 取得1行3列的值

browser.find_by_xpath('//*[@id="pageNoLink_0"]').first.click() # 点击下一页

# 打印数据,并退出浏览器

print(r1c1,r1c2,r1c3)

browser.quit()

【结语】

本文简单地讲述了如何利用python splinter库,操作谷歌浏览器,然后定位到所需的元素,然后获取元素的值。获取完毕后,将数据打印,并退出浏览器。关于数据的储存,请参考插上翅膀,让Excel飞起来——xlwings(一)。完整几百页数据的获取,就只是在代码上加一个循环,如有需要下次再细讲。完整代码如下:

from splinter import Browser

browser = Browser('chrome')

browser.visit('http://femhzs.mofcom.gov.cn/fecpmvc/pages/fem/CorpJWList.html')

r1c1=browser.find_by_xpath('//*[@id="foreach"]/td[1]').first.value

r1c2=browser.find_by_xpath('//*[@id="foreach"]/td[2]').first.value

r1c3=browser.find_by_xpath('//*[@id="foreach"]/td[3]').first.value

browser.find_by_xpath('//*[@id="pageNoLink_0"]').first.click()

# 打印数据,并退出浏览器

print(r1c1,r1c2,r1c3)

browser.quit()

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#coding:utf-8 import time import webbrowser as web import os import random #随机选择一个浏览器打开网页 def open_url_use_random_browser(): #定义要访问的地址 url='http://www.baidu.com' #定义浏览器路径 browser_paths=[r'C:\Program Files (x86)\Mozilla Firefox\firefox.exe', #r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe', #r'C:\Program Files (x86)\Opera\launcher.exe', #r'C:\Users\Administrator\AppData\Roaming\qianying\qianying.exe', #r'C:\Users\Administrator\AppData\Local\115Chrome\Application\115chrome.exe', #r'C:\Program Files (x86)\Internet Explorer\iexplore.exe', #r'D:\Program Files(x86)\SouExplorer\SogouExplorer\SogouExplorer.exe' ] #选择一个浏览器 def chose_a_browser_open_url(browser_path,url): #如果传入的浏览器位置不存在,使用默认的浏览器打开 if not browser_path: print ('using default browser to open') web.open_new_tab(url)#使用默认浏览器,就不再结束进程 else: #判断浏览器路径是否存在 if not os.path.exists(browser_path): print ('current browser path not exists,using default browser') #浏览器位置不存在就使用默认的浏览器打开 browser_path='' chose_a_browser_open_url(chose_a_browser_open_url,url) else: browser_task_name=browser_path.split('\\')[-1]#结束任务的名字 browser_name=browser_task_name.split('.')[0]#自定义的浏览器代号 print (browser_name) web.register(browser_name, None,web.BackgroundBrowser(browser_path)) web.get(browser_name).open_new_tab(url)#使用新注册的浏览器打开网页 print ('using %s browser open url successful' % browser_name) time.sleep(5)#等待打开浏览器 # kill_cmd='taskkill /f /IM '+browser_task_name#拼接结束浏览器进程的命令 # os.system(kill_cmd) #终结浏览器 browser_path=random.choice(browser_paths)#随机从浏览器中选择一个路径 chose_a_browser_open_url(browser_path,url) if __name__ == '__main__': print (''''' ***************************************** ** Welcome to python of browser ** ** Created on 2019-04-28 ** ** @author: Louise_ZOU ** ***************************************** ''') open_url_use_random_browser()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值