import requests
Res=requests.get(URl) 返回Response类的对象
标签内所有文字
HTML:
<!-- -->作用相当于python中的#
<style>标签中定义class属性的样式用点.(不唯一),id属性用井号键#(唯一)
提取数据:
当你直接爬取界面上看到的url,打印出网页访问状态码和网页源代码,当爬取的状态码是200,网页源码内容却与直接从网页上看到的不符时,那么就说明网页是动态网页。
直接提取
from bs4 import BeautifulSoup
soup = BeautifulSoup(字符串,'html.parser')
其次,括号中的参数:标签和属性可以任选其一,也可以两个一起使用,这取决于我们要在网页中提取的内容。
不能直接提取:
Network
进入的时候代码不是在第一个访问中
XHR用于传输数据,它能传输很多种数据因为有它的存在,人们不必刷新/跳转网页,即可加载新的内容。
json是被传输的一种数据格式。
找XHR
JOSN
当前页面加载更多内容时:
传递url参数
Query String Parameters里的内容,直接复制下来,封装为一个字典
改变需要修改的值,传递给params
Header(请求头)
headers = {
'origin':'https://y.qq.com',
# 请求来源,本案例中其实是不需要加这个参数的,只是为了演示
'referer':'https://y.qq.com/n/yqq/song/004Z8Ihr0JIu5s.html',
# 请求来源,携带的信息比“origin”更丰富,本案例中其实是不需要加这个参数的,只是为了演示
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
# 标记了请求从什么设备,什么浏览器上发出
}
get请求会应用于获取网页数据,比如我们之前学的requests.get(),
post请求则应用于向网页提交数据,比如提交表单类型数据(像账号密码就是网页表单的数据)。
selenium控制浏览器
# 本地Chrome浏览器设置方法
浏览器可见
from selenium import webdriver #从selenium库中调用webdriver模块
driver = webdriver.Chrome() # 设置引擎为Chrome,真实地打开一个Chrome浏览器
后台运行
# 本地Chrome浏览器的静默模式设置:
from selenium import webdriver #从selenium库中调用webdriver模块
from selenium.webdriver.chrome.options import Options # 从options模块中调用Options类
chrome_options = Options() # 实例化Option对象
chrome_options.add_argument('--headless') # 把Chrome浏览器设置为静默模式
driver = webdriver.Chrome(options = chrome_options) # 设置引擎为Chrome,在后台默默运行
driver.page_source获取网页源码
driver.get('https://www.baidu.com') # 打开网页
下图是提取一个时候的方法,提取多个element后加s即可
返回:返回WebElement类对象,
driver.close() # 关闭浏览器
定时:
利用CPU的多个核同时执行任务的技术,我们把它叫做“多进程”。
异步:并发执行
queue模块
Scrapy爬虫框架
Scheduler(调度器)部门主要负责处理引擎发送过来的requests对象(即网页请求的相关信息集合,包括params,data,cookies,request headers…等),会把请求的url以有序的方式排列成队,并等待引擎来提取(功能上类似于gevent库的queue模块)。
Downloader(下载器)部门则是负责处理引擎发送过来的requests,进行网页爬取,并将返回的response(爬取到的内容)交给引擎。它对应的是爬虫流程【获取数据】这一步。
Spiders(爬虫)部门是公司的核心业务部门,主要任务是创建requests对象和接受引擎发送过来的response(Downloader部门爬取到的内容),从中解析并提取出有用的数据。它对应的是爬虫流程【解析数据】和【提取数据】这两步。
Item Pipeline(数据管道)部门则是公司的数据部门,只负责存储和处理Spiders部门提取到的有用数据。这个对应的是爬虫流程【存储数据】这一步。
Downloader Middlewares(下载中间件)的工作相当于下载器部门的秘书,比如会提前对引擎大boss发送的诸多requests做出处理。
Spider Middlewares(爬虫中间件)的工作则相当于爬虫部门的秘书,比如会提前接收并处理引擎大boss发送来的response,过滤掉一些重复无用的东西。
创建Scrapy项目的命令:scrapy startproject xxxx