爬虫(网络爬虫),是一种按照一定规则自动抓取万维网信息的程序或者脚本。理论上来说,只要是我们在浏览器(客户端)能够做的事情,爬虫都可以做。
1.每一个网页都有一个唯一的url(统一资源定位符),来进行定位 2.网页都是通过HTML(超文本)文本展示的 3.所有的网页都是通过HTTP<超文本传输协议>(HTTPS)协议来传输的
爬虫的基本流程如下图所示: 1.分析网站,得到目标url 2.根据url,发起请求,获取页面的HTML源码 3.从页面源码中提取数据 a.提取到目标数据,做数据的筛选和持久化存储 b.从页面中提取到新的url地址,继续执行第二步操作 4.爬虫结束:所有的目标url都提取完毕,并且得到数据了,再也没有其他请求任务了,这时意味着爬虫结束。
聚焦爬虫在通用爬虫的基础上,增加了对某些特定页面和主题的定义。在URL的检索分析过程中保留有用的网页和信息,然后再将信息保存。
安装方式 windows系统下:
pip install requestslinux系统下:
sudo pip install requests或者去github上安装: https://github.com/requests/requests
导入模块:
import requests最常用的方法是requests.get(),具体参数是:
r=requests.get(url,params,**kwargs)url:爬取的网站地址。 params:参数,url中的额外参数。 **kwargs:12个控制访问的参数。
仅举一小例说明: 具体介绍和高级用法可见: https://requests.kennethreitz.org//zh_CN/latest/user/quickstart.html https://blog.csdn.net/pittpakk/article/details/81218566
1.安装selenium Win:
pip install selenium2.安装webdriver
各大浏览器webdriver地址可参见:https://docs.seleniumhq.org/download/ Firefox:https://github.com/mozilla/geckodriver/releases/ Chrome:https://sites.google.com/a/chromium.org/chromedriver/ 或者 http://chromedriver.storage.googleapis.com/index.html IE:http://selenium-release.storage.googleapis.com/index.html 注:webdriver需要和对应的浏览器版本以及selenium版本对应
3.添加webdriver.exe路径到环境变量 尤其是出现以下报错的情况:selenium.common.exceptions.WebDriverException: Message: ‘chromedriver’ executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
使用方法(仅举例用google webdriver打开浏览器):
from selenium import webdriver import time driver = webdriver.Chrome() driver.get("https://www.baidu.com") time.sleep(5) driver.close()执行后应该是: 更详细介绍可见: https://www.jianshu.com/p/1531e12f8852
要注意,包名是beautifulsoup4,如果不加上 4,会是老版本也就是 bs3,它是为了兼容性而存在,目前已不推荐。
引用官网的例子:
html_doc = """ <html><head><title>The Dormouse's story</title></head> <body> <p class="title"><b>The Dormouse's story</b></p> <p class="story">Once upon a time there were three little sisters; and their names were <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>, <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>; and they lived at the bottom of a well.</p> <p class="story">...</p> """使用 bs 的初始化操作,是用文本创建一个 BeautifulSoup 对象,建议手动指定解析器:
from bs4 import BeautifulSoup soup = BeautifulSoup(html_doc, 'html.parser')注:bs在使用的时候需要指定一个”解析器”(解析器不同使用的效果也不同): html.parse- python 自带,但容错性不够高,对于一些写得不太规范的网页会丢失部分内容
lxml- 解析速度快,需额外安装
xml- 同属 lxml 库,支持 XML 文档
html5lib- 最好的容错性,但速度稍慢
获取其中某个结构化元素及其属性:
soup.title # title 元素 # <title>The Dormouse's story</title> soup.p # 第一个 p 元素 # <p class="title"><b>The Dormouse's story</b></p> soup.p['class'] # p 元素的 class 属性 # ['title'] soup.p.b # p 元素下的 b 元素 # <b>The Dormouse's story</b> soup.p.parent.name # p 元素的父节点的标签 # body其他详细介绍可参看官方文档: https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html