精华内容
下载资源
问答
  • Python爬虫浏览器自动化模拟

    千次阅读 2018-09-22 14:43:26
    selenium可以模拟浏览器的点击、输入、验证、打开等操作,就像真实用户所操作的一样。下面我们就介绍一下selenium的具体使用方法。 安装 pip install selenium 此处我们使用火狐浏览器进行模...

    Selenium是一个用于Web应用程序测试的工具。当我们使用爬虫爬取一些动态网站时,有时候会出现爬取不到东西的情况,这时候我们就可以使用浏览器模拟的方法来进行网页内容的爬取。selenium可以模拟浏览器的点击、输入、验证、打开等操作,就像真实用户所操作的一样。下面我们就介绍一下selenium的具体使用方法。

    安装

    pip install selenium

    此处我们使用火狐浏览器进行模拟,使用浏览器模拟需要下载geckodriver.exe驱动。注意要下载适合自己火狐版本的geckodriver。

    下载地址

              https://github.com/mozilla/geckodriver/releases

    导入库

    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.firefox.options import Options as FOptions

    创建对象

    options = FOptions()
    #此处路径写你下载的geckodirver.exe所在的路径。(linux系统无需加.exe后缀,注意'/'与'\')
    brower = webdriver.Firefox(executable_path='E:\FireFox\geckodriver\geckodriver.exe',firefox_options=options)

    基本使用查找元素

    brower.get("http://example.webscraping.com/places/default/view/China-47")
    #使用xpath选出符合条件的内容
    print(brower.find_element_by_xpath('//tr[@id="places_neighbours__row"]/td[@class="w2p_fw"]').text)
    #页面源码 相当于requests.get().text
    print(brower.page_source)
    brower.get("http://example.webscraping.com/dynamic")
    #使用css选择器选出符合条件的内容
    print(brower.find_element_by_css_selector("#results").text)
    #关闭网页
    brower.close()

    元素交互

    在淘宝中模拟输入内容,然后清空之后,再次输入其他内容,最后点击搜索。

    brower.get("https://www.taobao.com")
    input = brower.find_element_by_id('q')
    #在输入框中输入内容
    input.send_keys('苹果')
    time.sleep(10)
    #清空输入框内容
    input.clear()
    #再次在输入框中输入内容
    input.send_keys('香蕉')
    button = brower.find_element_by_class_name("btn-search")
    #点击搜索按钮
    button.click()
    time.sleep(10)
    #关闭网页
    brower.close()

    鼠标模拟悬停并点击

    在爬虫爬取内容时,有些内容是需要将鼠标移到特定的地方才会显示出来的,若想要获取这类的内容,就需要鼠标模拟悬停然后选出出现的内容,进行点击或者直接获取内容。

    #为防止内容不全,先将浏览器最大化
    brower.maximize_window()
    brower.get('http://example.webscraping.com')
    #链接名字
    article = brower.find_element_by_link_text('Log In')
    ActionChains(brower).move_to_element(article).perform()
    #为防止内容未加载出来,先强制睡眠2秒
    time.sleep(2)
    menu = brower.find_element_by_xpath('//a[@href="/places/default/user/register?_next=/places/default/index"]')
    menu.click()

    动作链进阶

    在我们进行浏览器模拟时可能会遇到这种情况:需要拖动一个东西到指定的地方。这时候我们使用动作链,将这一系列操作联系起来,最后再执行。

    browser.get("http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")
    browser.switch_to.frame("iframeResult")
    source = browser.find_element_by_id("draggable")
    target = browser.find_element_by_id("droppable")
    actions = ActionChains(browser)
    # 动作链将一系列动作组织起来,形成一组测试,当调用perform的时候开始执行
    actions.drag_and_drop(source,target)
    # 执行
    actions.perform()
    time.sleep(2)
    t = browser.switch_to.alert
    print(t.text)
    t.accept()
    time.sleep(10)
    browser.close()

    执行JavaScript

    browser.get("http://www.zhihu.com/explore")
    time.sleep(5)#强制休眠
    #把页面拉到最下边
    browser.execute_script("window.scrollTo(0,document.body.scrollHeight)")
    browser.execute_script("alert('To Button')")
    browser.close()

    selenium中存在三种睡眠方式,上面我们已经接触到了一种,就是使用 'time.sleep()'强制睡眠,但这种方法在selenium中我们不推荐。下面介绍一下剩下的两种。

    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    #1.隐式休眠是全局的,如果找不到就等待设置的秒数,再次找不到抛出异常
    browser.implicitly_wait(2)
    url = 'https://www.taobao.com'
    browser.get(url)
    #2.wait对象可以有多个,指明达成条件休眠的时间
    wait = WebDriverWait(browser,5)
    # wait1 = WebDriverWait(browser,10)
    #判断页面是否有'q'属性
    input1 = wait.until(EC.presence_of_element_located((By.ID,"q")))#满足条件返回元素
    #判断元素是否能够点击
    button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,".btn-search")))
    print(input1,button)
    browser.close()

    我们在运行爬虫时当然不需要让浏览器一直显示,这时候我们可以使用浏览器无头模式,无头模式跟我们平常访问浏览器触发的事件是一样的,唯一的不同就是一个有页面,一个没有页面。

    我们只需在创建对象之后加入下面这行代码即可。

    options = FOptions()
    #无头模式
    options.add_argument('-headless')
    brower = webdriver.Firefox(executable_path='E:\FireFox\geckodriver\geckodriver.exe',firefox_options=options)

     

     

     

     

     

     

     

     

     

    展开全文
  • 使用浏览器渲染引擎。直接用浏览器在显示网页时解析HTML,应用CSS样式并执行JavaScript的语句。 这方法在爬虫过程中会打开...我们可以用Python的selenium库模拟浏览器完成抓取。Selenium是一个用于Web应用程序测试...

    使用浏览器渲染引擎。直接用浏览器在显示网页时解析HTML,应用CSS样式并执行JavaScript的语句。

    这方法在爬虫过程中会打开一个浏览器,加载该网页,自动操作浏览器浏览各个网页,顺便把数据抓下来。用一句简单而通俗的话说,使用浏览器渲染方法,爬取动态网页变成了爬取静态网页。

    我们可以用Python的selenium库模拟浏览器完成抓取。Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真正的用户在操作一样

    selenium 的安装与基本介绍

    selenium的安装非常简单,和其他的Python 库一样,我们可以用pip 安装。

    pip install selenium

    火狐浏览器:geckodriver.exe

      下载对应浏览器的版本 geckodriver.exe v15.0版本

      由于最新版火狐不在支持FireBug等开发工具,可以在https://ftp.mozilla.org/pub/firefox/releases/下载49版本以下的火狐,就可以增加Firebug等扩展了。

      我下载了火狐Firefox Setup 48.0b9.exe,安装后,在https://github.com/mozilla/geckodriver/releases/下载最新版geckodriver,将geckodriver.exef放在C:\Program Files (x86)\Mozilla Firefox目录下(就是你装浏览器的目录哈),并将其加入环境变量,

    
    

      #!/usr/bin/python
      #coding: utf-8


    from
    selenium import webdriver driver = webdriver.Firefox() driver.get('https://www.baidu.com')

     

    IE11浏览器:IEDriverServer.exe  

      IE浏览器驱动下载链接:http://selenium-release.storage.googleapis.com/index.html(需爬梯),安装最新版v3.9,将其放在C:\Windows\System32目录下(不用加入环境变量,默认在环境变量中),运行如下代码,发现报错如下,降低版本为3.0.0,重新运行代码发现成功。

    #!/usr/bin/python
    #coding: utf-8
    from selenium import webdriver
    driver = webdriver.Ie()
    driver.get('http://www.baidu.com')

     

    转载于:https://www.cnblogs.com/xiaohe520/p/10767693.html

    展开全文
  • 这个方法在爬虫过程中会打开一个浏览器加载该网页,自动操作浏览器浏览各个网页,顺便把数据抓下来。用一句简单而通俗的话说,就是使用浏览器渲染方法将爬取动态网页变成爬取静态网页。 我们可以用 Python 的 ...

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎。直接用浏览器在显示网页时解析 HTML、应用 CSS 样式并执行 JavaScript 的语句。

    这个方法在爬虫过程中会打开一个浏览器加载该网页,自动操作浏览器浏览各个网页,顺便把数据抓下来。用一句简单而通俗的话说,就是使用浏览器渲染方法将爬取动态网页变成爬取静态网页。

    我们可以用 Python 的 Selenium 库模拟浏览器完成抓取。Selenium 是一个用于Web 应用程序测试的工具。Selenium 测试直接运行在浏览器中,浏览器自动按照脚本代码做出单击、输入、打开、验证等操作,就像真正的用户在操作一样。

    通过Selenium模拟浏览器抓取。最常用 的是 Firefox,因此下面的讲解也以 Firefox 为例,在运行之前需要安装 Firefox 浏 览器。

    以爬取《Python 网络爬虫:从入门到实践》一书作者的个人博客评论为例。网址:http://www.santostang.com/2017/03/02/hello-world/

    在运行下列代码时,一定要留意自己网络是否畅通,如果网络不好造成浏览器不能正常打开网页及其评论数据,就可能造成爬取失败。

    1)找到评论的HTML代码标签。使用Chrome打开该文章页面,右键点击页面,打开“检查”选项。定位到评论数据。此处定位到的评论数据即是浏览器渲染后的数据位置,如图:

     

     

    2)尝试获取一条评论数据。在原来打开页面的代码数据上,我们可以使用以下代码,获取第一条评论数据。在下面代码中,driver.find_element_by_css_selector是用CSS选择器查找元素,找到class为’reply-content’的div元素;find_element_by_tag_name则是通过元素的tag去寻找,意思是找到comment中的p元素。最后,再输出p元素中的text文本。

    相关代码1:

    from selenium import webdriver
    from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
    
    caps=webdriver.DesiredCapabilities().FIREFOX
    caps["marionette"]=True
    binary=FirefoxBinary(r'E:\软件安装目录\装机必备软件\Mozilla Firefox\firefox.exe') #把上述地址改成你电脑中Firefox程序的地址
    driver=webdriver.Firefox(firefox_binary=binary,capabilities=caps)
    driver.get("http://www.santostang.com/2017/03/02/hello-world/")
    #page=driver.find_element_by_xpath(".//html")
    driver.switch_to.frame(driver.find_element_by_css_selector("iframe[title='livere']"))
    comment=driver.find_element_by_css_selector('div.reply-content-wrapper') #此处参数字段也可以是'div.reply-content',具体字段视具体网页div包含关系而定
    content=comment.find_element_by_tag_name('p')
    print(content.text)
    #driver.page_source

    输出:

    在JS 里面也找不到https://api.gentie.163.com/products/ 哪位大神帮忙解答下。谢谢。

     代码解析:

    1)caps=webdriver.DesiredCapabilities().FIREFOX

    由此可知,将上文代码中的caps["marionette"]=True注释掉,代码依旧可以正常运行。

     

    2)binary=FirefoxBinary(r'E:\软件安装目录\装机必备软件\Mozilla Firefox\firefox.exe')

     3)driver=webdriver.Firefox(firefox_binary=binary,capabilities=caps)

     构建webdriver类。

    还可以构建别的类型的webdriver类。

     

     

    4)driver.get("http://www.santostang.com/2017/03/02/hello-world/")

     

    5)driver.switch_to.frame(driver.find_element_by_css_selector("iframe[title='livere']"))

     6)comment=driver.find_element_by_css_selector('div.reply-content-wrapper')

    7)content=comment.find_element_by_tag_name('p')

    更多代码含义和使用规则请参见官网API和Navigating:http://selenium-python.readthedocs.io/index.html

     8)关于driver.switch_to.frame(driver.find_element_by_css_selector("iframe[title='livere']"))中的框架定位及title内容。

    可在代码中加入driver.page_source,并且注释掉driver.switch_to.frame(driver.find_element_by_css_selector("iframe[title='livere']"))。可在输出内容中找到(若输出杂乱,不好找出相关内容,可将其复制黏贴到文本文件中,使用Notepad++打开,该软件有前后标签对应显示功能):

    (此处只截取了相关内容的末尾部分)

    若使用了driver.switch_to.frame(driver.find_element_by_css_selector("iframe[title='livere']")),而再使用driver.page_source进行相关输出,则发现没有上面的iframe标签,证明我们已经将该框架解析完毕,可以进行相关定位获取元素了。

     

    上面我们只是获取了一条评论,如果要获取所有评论,使用循环获取所有评论。

    相关代码2:

    from selenium import webdriver
    from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
    
    caps=webdriver.DesiredCapabilities().FIREFOX
    caps["marionette"]=True
    binary=FirefoxBinary(r'E:\软件安装目录\装机必备软件\Mozilla Firefox\firefox.exe')
    driver=webdriver.Firefox(firefox_binary=binary,capabilities=caps)
    driver.get("http://www.santostang.com/2017/03/02/hello-world/")
    #page=driver.find_element_by_xpath(".//html")
    driver.switch_to.frame(driver.find_element_by_css_selector("iframe[title='livere']"))
    
    comments=driver.find_elements_by_css_selector('div.reply-content')
    for eachcomment in comments:
        content=eachcomment.find_element_by_tag_name('p')
        print(content.text)
    #driver.page_source

    输出:

    在JS 里面也找不到https://api.gentie.163.com/products/ 哪位大神帮忙解答下。谢谢。
    @先生姓张 原来要按照这里的操作才行。。。
    在JS 里面也找不到https://api.gentie.163.com/products/ 哪位大神帮忙解答下。谢谢。
    @先生姓张 这是网易云上面的一个连接地址,那个服务器都关闭了
    在JS 里面也找不到https://api.gentie.163.com/products/ 哪位大神帮忙解答下。谢谢。
    测试
    为什么我用代码打开的文章只有两条评论,本来是有46条的,有大神知道怎么回事吗?
    菜鸟一只,求学习群
    lalala1
    我来试一试
    我来试一试
    应该点JS,然后看里面的Preview或者Response,里面响应的是Ajax的内容,然后如果去爬网站的评论的话,点开js那个请求后点Headers -->在General里面拷贝 RequestURL 就可以了

    注意代码2中将代码1中的comment=driver.find_element_by_css_selector('div.reply-content-wrapper') 改成了comments=driver.find_elements_by_css_selector('div.reply-content')

    elements加了s

     

    以上获取的全部评论数据均属于正常进入该网页,等该网页渲染完获取的全部评论,并未进行点击“查看更多”来加载目前还未渲染的评论。

    下面介绍一种能够爬取到所有评论,包括点击完“查看更多”加载的目前还未渲染的评论。

    相关代码:

    from selenium import webdriver
    from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
    import time
    
    caps=webdriver.DesiredCapabilities().FIREFOX
    caps["marionette"]=True
    binary=FirefoxBinary(r'E:\软件安装目录\装机必备软件\Mozilla Firefox\firefox.exe')
    driver=webdriver.Firefox(firefox_binary=binary,capabilities=caps)
    driver.get("http://www.santostang.com/2017/03/02/hello-world/")
    driver.switch_to.frame(driver.find_element_by_css_selector("iframe[title='livere']"))
    
    time.sleep(60)
    for i in range(0,10):
        try:
            load_more=driver.find_element_by_css_selector('div.more-wrapper')
            load_more.click()
        except:
            pass
        time.sleep(5)
    comments=driver.find_elements_by_css_selector('div.reply-content')
        
    for eachcomment in comments:
        content=eachcomment.find_element_by_tag_name('p')
        print(content.text)

    代码解析:

    1)time.sleep(60)

    延时60秒执行以下代码。

    2)load_more=driver.find_element_by_css_selector('div.more-wrapper')中的参数字符串

    打开目标网页,等目标网页整体渲染完之后,右键评论区的“查看更多”。

    3)load_more.click()

    模拟点击“查看更多”按钮,进行完整显示所有评论。

    4)之所以在代码中两次使用延时函数,是因为不同网络状况和不同机器环境下可能在打开网页以及点击“查看更多”按钮后不能马上显示评论,所以代码需要等一等,等到页面完全渲染后,再进行评论区数据的收集工作。

    因此各延时函数的延时时间长短可视具体情况灵活设置。

     输出结果:

    在JS 里面也找不到https://api.gentie.163.com/products/ 哪位大神帮忙解答下。谢谢。
    @先生姓张 原来要按照这里的操作才行。。。
    在JS 里面也找不到https://api.gentie.163.com/products/ 哪位大神帮忙解答下。谢谢。
    @先生姓张 这是网易云上面的一个连接地址,那个服务器都关闭了
    在JS 里面也找不到https://api.gentie.163.com/products/ 哪位大神帮忙解答下。谢谢。
    测试
    为什么我用代码打开的文章只有两条评论,本来是有46条的,有大神知道怎么回事吗?
    菜鸟一只,求学习群
    lalala1
    我来试一试
    我来试一试
    应该点JS,然后看里面的Preview或者Response,里面响应的是Ajax的内容,然后如果去爬网站的评论的话,点开js那个请求后点Headers -->在General里面拷贝 RequestURL 就可以了
    现在死在了4.2节上,页面评论是有的,但是XHR里没有东西啊,这是什么情况?有解决的大神吗?
    @骨犬 JS
    为何静态网页抓取不了?
    
    奇怪了,我按照书上的方法来操作,XHR也是空的啊
    @易君召 我的也是空的
    你解决问题了吗
    @思い亦深 看JS不是XHR
    XHR没有显示任何东西啊。奇怪。
    找到原因了
    caps["marionette"] = True
    作者可以解释一下这句话是干什么的吗
    @A cat named GitHub 改成 caps["marionette"] = False 可以运行。 目前还没吃透代码,先用着试试
    我用的是 pycham IDE,按照作者的写法写的,怎么不行
    @A cat named GitHub 找到原因了
    caps["marionette"] = True
    作者可以解释一下这句话是干什么的吗
    对火狐版本有要求吗
    @花晨 我的也是提示火狐版本不匹配,你解决了吗
    @A cat named GitHub 重装了geckodriver
    改成caps["marionette"] = "Windows"
    总之就好了
    4.3.1 打开Hello World,代码用的作者的,火狐地址我也设置了,为啥运行没反应
    from selenium import webdriver
    from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
    
    caps = webdriver.DesiredCapabilities().FIREFOX
    caps["marionette"] = False
    binary = FirefoxBinary(r'C:\Program Files\Mozilla Firefox\firefox.exe')
    #把上述地址改成你电脑中Firefox程序的地址
    driver = webdriver.Firefox(firefox_binary=binary, capabilities=caps)
    driver.get("http://www.santostang.com/2017/03/02/hello-world/")
    我是番茄
    为什么刷新没有XHR数据,评论明明加载出来了
    为什么刷新没有XHR数据,评论明明加载出来了
    @萌萌哒的小叽叽丶 书里错误很多,留个qq吧
    为什么刷新没有XHR数据,评论明明加载出来了
    第21条测试评论
    第20条测试评论
    第19条测试评论
    第18条测试评论
    第17条测试评论
    第16条测试评论
    第15条测试评论
    第14条测试评论
    第13条测试评论
    第12条测试评论
    第11条测试评论
    第10条测试评论
    第9条测试评论
    第8条测试评论
    第7条测试评论
    第6条测试评论
    第5条测试评论
    第4条测试评论
    第3条测试评论
    第二条测试评论
    第一条测试评论

     

     

    参考书目:唐松,来自《Python 网络爬虫:从入门到实践》

     参考书目作者关于本部分的介绍:http://www.santostang.com/2017/09/25/4-3-%E9%80%9A%E8%BF%87-selenium-%E6%A8%A1%E6%8B%9F%E6%B5%8F%E8%A7%88%E5%99%A8%E6%8A%93%E5%8F%96/

    转载于:https://www.cnblogs.com/dudududu/p/8835977.html

    展开全文
  • 模拟浏览器快速访问页面的内容. 浏览网页的过程中发生了什么? 浏览器输入http://www.baidu.com/bbs/; 1). 根据配置的DNS获取www.baidu.com对应的主机IP; 2). 根据端口号知道跟服务器的那个软件进行交互。 3). ...
    1. 什么是爬虫?
      就是在互联网上一直爬行的蜘蛛, 如果遇到需要的资源, 那么它就会抓取下来(html内容);
      模拟浏览器快速访问页面的内容.

    2. 浏览网页的过程中发生了什么?

    • 浏览器输入http://www.baidu.com/bbs/;
    • 1). 根据配置的DNS获取www.baidu.com对应的主机IP;
    • 2). 根据端口号知道跟服务器的那个软件进行交互。
    • 3). 百度的服务器接收客户端请求:
    • 4). 给客户端主机一个响应(html内容) ----- html, css, js
    • 5). 浏览器根据html内容解释执行, 展示出华丽的页面;
    </li>                                                                                                                                                                                                <li
    style="margin: 0px 10px 0px 5px; width: 120px; float: left; height: 30px; display: inline;">
    <a href="http://www.cfets-icap.com.cn/" target="_blank"  style="color:#08619D">
    上海国际货币经纪公司
    </a>
    </li>
    
    常见模拟浏览器的信息:
      1.Android
        Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19
        Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
        Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
        2.Firefox
    
        Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
        Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0
        3.Google Chrome
    
        Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
        Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19
        4.iOS
        Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3
    
    
    
    """
    import random
    import re
    
    from urllib.request import urlopen, Request
    from urllib.error import  URLError
    def get_content(url):
        """获取页面内容, 反爬虫之模拟浏览器"""
        # 防止一个浏览器访问频繁被封掉;
        user_agents = [
            "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0",
            "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19",
            "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0",
        ]
        try:
            # reqObj = Request(url, headers={'User-Agent': user_agent})
            reqObj = Request(url)
            # 动态添加爬虫请求的头部信息, 可以在实例化时指定, 也可以后续通过add—header方法添加
            reqObj.add_header('User-Agent', random.choice(user_agents))
        except URLError as e:
            print(e)
            return  None
        else:
            content = urlopen(reqObj).read().decode('utf-8').replace('\t', ' ')
            return  content
    
    
    def parser_content(content):
        """解析页面内容, 获取银行名称和官网URL地址"""
        pattern = r'<a href="(.*)" target="_blank"  style="color:#08619D">\s+(.*)\s+</a>'
        bankinfos = re.findall(pattern, content)
        if not bankinfos:
            raise  Exception("没有获取符合条件的信息")
        else:
            return  bankinfos
    
    def main():
        url = "http://www.cbrc.gov.cn/chinese/jrjg/index.html"
        content = get_content(url)
        bankinfos = parser_content(content)
        with open('doc/bankinfo.txt', 'w') as f:
            # ('http://www.cdb.com.cn/', '国家开发银行\r')
            for bank in bankinfos:
                name = bank[1].rstrip()
                url = bank[0]
                # 根据正则判断银行的url地址是否合法, 如果合法才写入文件;
                pattern =  r'^((https|http|ftp|rtsp|mms)?:\/\/)\S+'
                if re.search(pattern, url):
                    f.write('%s: %s\n' %(name, url))
                else:
                    print("%s无官方网站" %(name))
            print("写入完成....")
    
    
    if __name__ == '__main__':
        main()
    
    
    
    展开全文
  • 模拟浏览器 设置超时 HTTP请求:进行客户端与服务端之间的消息传递时使用 爬虫 网络爬虫又称网络蜘蛛、网络蚂蚁、网络机器人等,可以自动化浏览网络中的信息,当然浏览信息的时候需要按照我们制定的规则进行,...
  • 网页模拟手机打开网页 chrome的MobileEmulation实现手机网页自动化测试 1. 第一种方法 # -*- coding: utf-8 -*- from selenium import webdriver from time import sleep #{'deviceName': '必须与谷歌浏览...
  • #Cookie 用你自己账号登陆后,用火狐浏览器看看你自己的Cookie ...具体实现:自定义网页请求报头。 ''' #实例二:依然爬取豆瓣,采用伪装浏览器的方式 import urllib.request import ssl ssl._create_...
  • 对于采用异步加载技术的网页,有时候想通过逆向工程的方式来设计爬虫进行爬取会比较困难,因此,要想通过python获取异步加载数据往往可以使用Selenium模拟浏览器的方式来获取。 Selenium是一个用于Web应用程序测试...
  • 浏览网页的过程可分为以下四个步骤: 浏览器通过DNS服务器查找域名对应的IP地址; 向IP地址对应的Web服务器发送请求; Web服务器响应请求,返回HTML页面; 浏览器解析HTML文本,并显示页面 实践内容: 1....
  • 使用selenium模拟浏览器抓取 完整版教程 #直接用浏览器在显示页面时解析HTML,应用CSS...使用Python的selenium库模拟浏览器完成抓取 selenium新版需要下载geckodriver https://github.com/mozilla/geckodriver/rele...
  • 移动设备与 PC 网页浏览区别最大的就是分辨率,大型网站为了体验使用移动设备访问时都会专门提供移动版本。而其他很多站点也是采用响应式设计,也可以支持移动设备以较好的访问。 我们也需要测试网页在移动设备上的...
  • Python——实现网页模拟键盘输入和鼠标点击一.安装selenium库1.1 win+R打开输入窗口1.2 输入cmd,点击确定1.3 输入代码:二.以谷歌浏览器为例,配置环境2.1打开谷歌浏览器,查看当前浏览器的版本2.2 输入谷歌浏览器...
  • Python爬虫之查找自己浏览器headers

    千次阅读 2020-09-19 16:21:02
    如果使用Python进行爬取页面时,使用了别人的headers可能会导致爬取不到任何数据(因为代码在你自己的电脑运行,所以无法模拟别人的浏览器)。 比如,在进行学习时,或多或少都会参考别人的代码,这时如果你将别人...
  • 使用google浏览器获取网站访问的http信息》和《第14.4节 使用IE浏览器获取网站访问的http信息》中介绍了使用Google浏览器和IE浏览器怎么获取网站访问的http相关报文信息,本节介绍利用获取的信息怎么在Python应用中...
  • 1.网络爬虫的基本概念网络爬虫(又称网络蜘蛛,机器人),就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。只要浏览器能够做的事情,原则上,爬虫都能够做到。2.网络...
  • 本文介绍了谷歌浏览器开发者工具的开启方法、在开发者工具这查看http访问报文头信息的方法,通过这些介绍内容,我们就能获取到一次谷歌浏览器上网过程的关键信息,以供后续爬虫应用模拟谷歌浏览器发起http访问使用。...
  • 当你需要爬取的页面内容在访问页面5秒后才会出现,这时使用python的requests模块就很难爬取到你想要的内容了.requests和selenium的不同:requests是通过模拟http请求来实现浏览网页的selenuim是通过浏览器的API实现...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 131
精华内容 52
关键字:

python模拟浏览器浏览网页

python 订阅