Python编程快速上手 - 从Web中爬取信息

Python爬取Web信息的四个主要模块(轮子):

(1)webbrowser:是Python自带的,用来打开浏览器指定页面

(2)requests:从因特网上下载文件和网页

 

(3)Beautiful Soup:解析HTML,即网页编写的格式

(4)selenium:启动并控制一个Web浏览器,该模块能够实现填写表单,模拟鼠标在页面的点击

 

webbrowser模块

能打开浏览器的模块webbrowser,它的open函数可以做一些有意思的事情。例如从sys.argv或者剪切板读入地址,然后直接在Google地图打开相应的地图页面。

import webbrowser #python模块,非第三方模块,不需要下载,直接使用
import pyperclip #第三方模块
#启用电脑默认的浏览器打开网页
address = pyperclip.paste()
webbrowser.open('http://www.google.cn/maps/place/'+address)

requests模块

很强大的一个模块,从Web直接下载文件(HTML,txt,zip等等)

【Tips】爬虫爬取网站时,会被部分网站阻止,因为不更改请求头的话,请求头会默认为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://blog.csdn.net/qq_31278903',headers=header)
#检查下载状态,下载失败时会停止
print(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('title')[0]
print(title.text)

li = list(title.text)

#此部分截取出Title标签中的名称
print("".join(li[1:5]))

【结果】

【Tips】requests获取的信息自动保存在text当中

Beautiful Soup模块(也叫‘bs4’模块)

BeautifulSoup模块主要用于HTML的解析

常用css选择器

soup.select('div')所有名为<div>的元素
soup.select('#author')带有id属性为author的元素
soup.select('.notice')所有使用CSS class属性名为notice1的元素
soup.select('div span')所有在<div>元素之内的<span>元素
soup.select('div >span')所有直接在<div>元素之内的<span>元素,中间没有其他元素
soup.select('input[name]')所有名为<input>,并有一个name属性,其值无所谓的元素
soup.select('input[type="button"]')所有名为<input>,并有一个type属性,其值为button的元素

【实例】

res = requests.get("http://www.baidu.com")
# print(res.text)
# print(res.raise_for_status())
noStarchSoup = bs4.BeautifulSoup(res.text)
# print(noStarchSoup)

【结果】

selenium模块

该模块可以让Python直接控制浏览器,实际点击链接,填写登录信息,可以实现正常的人机交互

【常用的方法】

(1)启动selenium控制的浏览器

【实例】

browser = webdriver.Firefox()
type(browser)
browser.get("http://www.baidu,com")

(2)在页面内寻找元素

【常用方法】

  • browser. find element by class name(name)           使用CSS类name的元素
  • browser. find elements by class name(name)
  • browser. find element by css selector(selector)      匹配 CSS selector的元素
  • browser. find elements by css selector(selector)
  • browser. find element by id(id)                                  匹配d属性值的元素
  • browser.find elements by id(id)
  • browser. find element by link text(text)                   完全匹配提供的text的<a>元素
  • browser. find elements by link text( text)
  • browser. find element by partial link text(tex)         包含提供的text的<a>元素
  • browser. find elements by partial link text(text)
  • browser. find element by name(name)                     匹配mame属性值的元素
  • browser. find elements by name(name)
  • browser. find element by tag name(name)                 匹配标签name的元素
  • browser. find elements by tag name(name)              (大小写无关,<a>元素匹配a和A

【Tips】查找返回的是WebElement对象,其包含以下属性:

  • tag_name : 标签名
  • get_attribute(name) : 该元素name属性的值
  • text : 该元素内的文本
  • clear() : 对于文本字段或文本区域元素,清除其中的输入文本
  • is_displayed : 如果该元素可见,返回True,否则False
  • is_enabled : 对于输入元素,如果该元素启用,返回True
  • is_selected : 对于复选框或单选框元素,如果该元素被选中,选择True
  • location : 一个字典,包含键‘x’和‘y’,表示该元素在该页面上的位置

(3)点击页面

(4)填写并提交表单

(5)发送特殊值

【selenium.webdriver.common.keys模块中的常用变量】

  • Keys.DOWN, Keys.UP,     Keys.LEFT. Keys.RIGHT       键盘箭头键
  • Keys ENTER, Keys. RETURN                   回车和换行键
  • Keys.HOME. Keys. END PAGE DOWN, Keys. PAGE UP       Home键、End键、 PageUp键和 Page Down键
  • Keys. ESCAPE, Keys BACK SPACE, Keys. DELETE             Esc、 Backspace和字母键
  • Keys. F1, Keys. F2,……, Keys.                                               键盘顶部的F1到F2键 F12Tab键
  • Keys. TAB                TAB键

(6)点击浏览器按钮

【常用方法】

          browser.back()/forward()/refresh()/quit();返回/前进/刷新/关闭窗口


整理自《Python快速上手》第十一章 从Web抓取信息

Wimb

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wimb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值