python第十一章 从web抓取信息

利用webbrowser 模块打开URL

  1. web抓取:即利用程序下载并处理来自web的内容。
    webbrowser: Python自带,打开浏览器获取指定页面
    import webbrowser
    # 打开百度浏览器
    webbrowser.open('http://www.baidu.com')

    requests:从因特网上下载文件和网页
    beautiful Soup: 解析HTML,即网页编写的格式
    selenium :启动并控制一个web浏览器,selenium能够填写表单,并模拟鼠标在这个浏览器中点击。
  2. sys.argv变量保存了程序的文件名和命令行参数的列表
    import sys
    logging.info("sys = %s " % (sys.argv))
    if len(sys.argv) > 1:
        address = ' '.join(sys.argv[1:])
        logging.info("address: %s" % address)
    
    输入:
    Python web_test.py http://www.baidu.com
    返回结果是:
     2018-11-11 22:07:31,652 - INFO - sys = ['web_test.py', 'http://www/baidu.com']
     2018-11-11 22:07:31,652 - INFO - address: http://www/baidu.com
    
  3. import webbrowser
    # webbrowser.open('http://www.baidu.com')
    
    import logging
    logging.basicConfig(level=logging.INFO, format=' %(asctime)s - %(levelname)s - %(message)s')
    
    import sys, pyperclip
    logging.info("sys = %s " % (sys.argv))
    if len(sys.argv) > 1:
        address = ' '.join(sys.argv[1:])
        logging.info("address: %s" % address)
    else:
        address = pyperclip.paste()
        logging.info("address: %s" % address)
    
    webbrowser.open('https://baidu.com/' + address)

    pyperclip.paste()从剪切板中获取内容(就是之前鼠标中复制到的内容),然后和open中的URL进行拼接。

用requests模块从web中下载文件

  1. 利用requests模块从web上下载东西(替代urllib2很难用)
    当系统中安装有python2和python3版本的时候使用pip install requests报错,
    解决办法:python2 -m pip install requests
  2. requests.get()函数接受一个要下载的URL,返回一个Response对象:res
    res.status_code 是返回的状态码
    res.text是返回的字符串
    res.raise_for_status()如果下载失败就会抛出异常;
    res.iter_content()方法在循环中每次返回指定的字节数目

HTML

  1. html是一个纯文本文件,带有.html文件扩展名,这个文件中的文本被标签环绕<b>
  2. 利用浏览器的开发工具,弄清楚元素的id属性,是编写web抓取程序的常见任务。

BeautifulSoup模块接卸HTML

  1. import bs4即可,bs4.BeautifulSoup()函数调用时需要一个字符串(也可以是一个File对象),其中包含要解析的HTML,返回一个BeautifulSoup()对象。
    select()方法:针对要寻找的元素,传入一个字符串作为“css选择器”,读取web页面的元素。返回一个Tag对象的列表,是Beautiful Soup表示一个HTML元素的方式;
    在元素上调用getText()方法,返回该元素的文本(及时在开始和结束标签之间的内容),或者内部的HTML。
    get(属性名称字符串)方法从元素中获取属性值;

selenium模块直接控制浏览器

  1. 可以使用该模块自动登录网站,填写表单,使用Firefox浏览器进行操作。

猜你喜欢

转载自blog.csdn.net/q1138266752/article/details/83930199