• 【python】从web抓取信息


    • 能打开浏览器的模块webbrowser,它的open函数可以做一些有意思的事情。例如从sys.argv或者剪切板读入地址,然后直接在Google地图打开相应的地图页面。
    import webbrowser #python模块,非第三方模块,不需要下载,直接使用
    import pyperclip #第三方模块
    #启用电脑默认的浏览器打开网页
    address = pyperclip.paste()
    webbrowser.open('http://www.google.cn/maps/place/'+address)

    这个模块平时使用的不多,只是在书上看到了才试了试。它的功能selenium模块(第三方模块)可以实现,而且selenium模块的功能更多。

    • requests模块(第三方模块),很强大的一个模块,从Web直接下载文件(HTML,txt,zip等等)。

    爬虫爬取网站时,会被部分网站阻止,因为不更改请求头的话,请求头会默认为Python...

    请求头可设置为:

    header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
                            ' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}

    简单的例子如下:

    import requests
    from bs4 import BeautifulSoup    #requests和bs4都为第三方模块
    #请求头
    header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
                            ' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
    #接受返回的HTML文件
    res = requests.get('https://www.cnblogs.com/to-red/',headers=header)
    #检查下载状态,下载失败时会停止
    res.raise_for_status()
    #下载成功后会会保存在text变量中
    #print(res.text)
    
    #BeautifulSoup解析HTML,返回一个BeautifulSoup对象
    soup = BeautifulSoup(res.text,'html.parser')
    #select方法,p .class #id,返回的是Tag对象,有对应的HTML标签,也有attrs属性
    title = soup.select('#Header1_HeaderTitle')[0]
    print(title.text)
    blog = title.get('href') 
    print(blog)

    requests模块+bs4模块就可以做很多事情了,比如追一本小说,每次运行一次程序,就会下载好最新的章节。

    • selenium模块,控制Google浏览器需要安装chromedriver  点击下载,并将chromedriver.exe放在与Chrome浏览器的同一目录下。

    如图:

     selenium模块的常用操作:

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    browser = webdriver.Chrome(executable_path='C:Program Files (x86)GoogleChromeApplicationchromedriver')
    browser.get('https://www.cnblogs.com/to-red/')
    #find_element_*方法在页面寻找内容
    pythonS = browser.find_element_by_id('CatList_LinkList_0_Link_0')
    #单击
    pythonS.click()
    #提交表单
    search = browser.find_element_by_id('q')
    search.send_keys('hello')
    #发送一个回车键
    search.send_keys(Keys.ENTER)
  • 相关阅读:

    创建分区表
    提示 适配器错误
    新手-ios
    web中绝对路径换虚拟路径
    UpdatePanel1里面使用FileUpload控件
    批量将一个表数据导入到另外一个表里面(不同服务器也可以)
    oracle 定时 job
    修改oracle字符集
    Oracle定时备份数据库
  • 原文地址:https://www.cnblogs.com/to-red/p/9747875.html
Copyright © 2020-2023  润新知