主要内容

  1. Resquests 库获取网页源代码
  2. 使用 Selenium 库获取网页源代码
  3. 使用requests 库 和 Selenium 库爬取网页的优缺点

一、Resquests 库获取网页源代码

1.1 使用Requests 库获取百度新闻的网页源代码

  • 具体代码:

    import requests
    url = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=阿里巴巴'
    res = requests.get(url).text
    print(res)
    
  • 获取到的网页源代码:

    <html>
    <head><script>location.replace(location.href.replace("https://","http://"));</script>
    </head>
    <body><noscript><meta http-equiv="refresh" content="0;url=http://www.baidu.com/"></noscript>
    </body>
    </html>
    
  • 可以看到没有获取到真正的网页源代码,这是因为百度新闻网站只认可浏览器发送的访问请求,不认可Python发送的访问请求。

    • 解决方案:此时需要通过设置requests.get()函数的参数headers,以模拟浏览器进行访问。

      headers = {"User-Agent":"Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 103.0.5060.114Safari / 537.36Edg / 103.0.1264.62"}
      

1.2 改进版——模拟浏览器获取真实网址源代码

  • 实现代码:

    import requests
    url = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=阿里巴巴'
    headers = {"User-Agent":"Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 103.0.5060.114Safari / 537.36Edg / 103.0.1264.62"}
    res = requests.get(url,headers=headers).text
    print(res)
    

1.3 关于 参数 headers 具体介绍

  • 参数headers用于向网站提供访问者的信息,其中的User-Agent(用户代理)反映了访问者使用的是哪种浏览器

  • 虽然有时不加headers也能获得网页的源代码(如爬取Python官网),但是headers的设置和使用并不麻烦,而且可以避免可能会出现的爬取失败,所以还是建议加上headers。

  • 每次只需要只要记得在爬虫程序的最前面写上如下代码:

    headers = {"User-Agent":"Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 103.0.5060.114Safari / 537.36Edg / 103.0.1264.62"}
    
    • 然后每次使用requests.get()函数访问网址时,加上headers=headers参数即可

1.4 Requests库的缺点

  • 使用requests 库获取的是未经渲染的网页源代码,如果用它来爬取动态渲染的网页,就往往爬取不断我们想要的结果

  • 快速验证网页是否被动态渲染的方法:

    • 右键快捷菜单查看网页源代码 ,若看到的网页源代码内容很少,也不包含用开发者工具能看到的信息,就可以判定用开发者工具看到的网页源代码是动态渲染后的结果
  • 要从经过动态渲染的网页中爬取数据的办法:

    • 需要使用Selenium库打开一个模拟器访问网页,然后获取渲染后的网页源代码

二、使用 Selenium 库获取网页源代码

2.1 模拟浏览器以及Selenium 库的安装

  • 要使用Selenium库爬取数据,除了需要为Python安装Selenium库,还需要安装一个模拟浏览器(详细安装步骤看博客4)。Selenium库控制这个模拟浏览器去访问网页,才能获取网页源代码。

2.2 获取网页源代码

  • 使用Selenium库获取新浪财经股票信息

    import time
    from selenium import webdriver
    browser = webdriver.Chrome()
    browser.get('https://finance.sina.com.cn/stock/')
    data = browser.page_source # 核心代码
    print(data)
    time.sleep(1000)
    
  • 使用下面的代码,就能关闭模拟浏览器

    browser.quit()
    

三、使用requests 库 和 Selenium 库爬取网页的优缺点

  • 因为Requests库是直接访问网页,爬取速度非常快;而Selenium库要先打开模拟浏览器再访问网页,导致爬取速度较慢
  • 如果说Requests库可以爬取50%的网站,那么Selenium库可以爬取95%的网站,大部分爬取难度较高的网站都可以用Selenium库获取网页源代码
  • 实战中通常将这两个库结合使用,实现优势互补:如果用Requests库能获取到需要的网页源代码,那么优先使用Requests库进行爬取;如果用Requests库获取不到,再使用Selenium库进行爬取。

如果觉得文章不错,可以给我点赞鼓励一下我,欢迎收藏
关注我,我们一起学习,一起进步!!!

03.获取网页源代码相关推荐

  1. 获取网页源代码的最简单办法

    获取网页源代码的最简单办法,就是利用 WinInet 单元中的函数: Code uses WinInet; function GetWebPage(const Url: string):string; ...

  2. c#利用WebClient和WebRequest获取网页源代码的比较

    前几天举例分析了用asp+xmlhttp获取网页源代码的方法,但c#中一般是可以利用WebClient类和WebRequest类获取网页源代码.下面分别说明这两种方法的实现. WebClient类获取 ...

  3. java获取页面标签_java获取网页源代码后,提取标签内容……

    java获取网页源代码后,提取标签内容-- 关注:245  答案:2  mip版 解决时间 2021-02-01 09:11 提问者咏bù琂败 2021-01-31 13:49 import java ...

  4. c#正则表达式取出数据库中带html标签的内容,C#用正则表达式 获取网页源代码标签的属性或值...

    1.有url获取到网页源代码: using System.Web; using System.IO; using System.Net; private void GetHtmlinfo(string ...

  5. js技术要点---JS 获取网页源代码

    JS 获取网页源代码 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html& ...

  6. c# 获取html代码怎么写,C#获取网页源代码的方法

    本文实例讲述了C#获取网页源代码的方法.分享给大家供大家参考.具体如下: public string GetPageHTML(string url) { try { HttpWebRequest wr ...

  7. 获取网页源代码 python_python 获取网页源代码

    import re #正则表达式模块 import urllib.request import time #时间模块 import string #字符串模块 def getHtml(url):f=u ...

  8. c#获取网页源代码的5种方式

    全栈工程师开发手册 (作者:栾鹏) c#教程全解 c#获取网页源代码的5种方式,发送请求获取响应数据流,按照不同的编码转换为响应字符串 测试代码 static void Main() {string ...

  9. python selenium 获取网页源代码

    获取网页源代码: 引入组件:[from selenium import webdriver]. [from selenium.webdriver.chrome.options import Optio ...

  10. 用Selenium库获取网页源代码:新浪财经股票信息

    1.访问及关闭页面 通过以下代码即可访问网站,相当于模拟人打开了一个浏览器,然后访问指定网址. from selenium import webdriver browser = webdriver.C ...

最新文章

  1. 已知子网掩码如何计算IP地址中的主机位
  2. 一文了解P2P的前世今生
  3. 北京大学Cousera学习笔记--3-计算导论与C语言基础-第一讲.计算机的基本原理-计算机怎么计算-数的二进制...
  4. java 事件通知_正确获取Java事件通知
  5. 原来在首席架构眼里MySQL果然如此不一样!
  6. vue监控指定div滑动触底
  7. p6spy oracle,springboot p6spy 打印完整sql
  8. is_enabled:selenium中判断元素是否可以使用;is_selected()/is_displayed()
  9. 服务器连接无线键盘,【罗技 K375s 无线蓝牙键盘使用总结】连接|手感_摘要频道_什么值得买...
  10. NUC140之I2C和AT24C32
  11. 今日学习在线编程题:可怜的小码哥
  12. html5光线传感器,光线传感器是什么
  13. 介绍一款软件卸载工具IObit
  14. ctf镜子里面的世界_萌娃照镜子,演绎小脑袋大疑惑,“虚晃一枪”的模样简直萌化了...
  15. mysql 百万级别 更新_mysql百万级数据高效插入和更新
  16. 复旦计算机学院院长江,CCF 上海浦江大讲堂-杰出讲者报告会在复旦大学成功举行...
  17. AutoCAD2019+vs2019+C# 二次开发学习笔记day05(持续更新)
  18. 【毕业设计】基于SSM的酒店客房信息管理系统 - java web
  19. app访问服务器共享文件夹,管理企业共享文件软件的选择
  20. 【C++】【学习笔记】【递归与回溯问题详解与例题】排列问题;组合问题;二维平面回溯;flood fill问题;搜索问题(八皇后);

热门文章

  1. 详述 Kafka 基本原理
  2. python学习第j十一天
  3. 学计算机选择师范类好吗,师范教育类专业和计算机类专业,两者相比,哪个更适合自考生报读...
  4. MSL、TTL、RTT
  5. 串口调试助手linux设备串口,linux下安装串口调试助手
  6. 夏令营面试常见英文问题回答_回答有关5合1促销的3个常见问题
  7. win7锁定计算机自动关机,win7电脑怎么定时关机_win7系统设置自动关机的方法
  8. 作为程序员上班的第一天
  9. ACM一年总结(写于2011年11月18日)
  10. 万网域名如何设置显性url转发和隐性URL转发