之前因为想研究怎么让esp8266上校园网,折腾半天,请教大佬后,说要先学爬虫,就能知道怎么模拟登录上网了。大佬学的是c#,我学的是python,于是就开始学习了python爬虫,这是学习中觉得好玩的事,也遇到了不少困难。
完整源代码已打包,文末可免费领取
一、先上效果图
这本书一共两千四百多章,一开始基本上爬到第1章(前面还有广告恰饭章)就报
Remoto end closed connection without response 的错,估计被发现是爬虫了,弄了半天,总算爬取成功。
二、bs4学习
1、原理
bs4进行数据解析
bs4数据解析原理
1.实例化一个BeautifulSoup对象,并且将页面源码数据加载到该对象中
2.通过调用BeautifulSoup对象中相关的属性或者方法进行标签定位和数据解析
环境安装
# pip install bs4
# pip install lxml
#如何实例化BeautifulSoup对象
from bs4 import BeautifulSoup
2、运用
两种操作方式,我们一般用第二种爬取网页
from bs4 import BeautifulSoup
#1.将本地的html文档中的数据加载到对象中 fp = open("./baidu.html",'r',encoding='utf-8') soup = BeautifulSoup(fp,'lxml')#创建一个lxml解析器
# print(soup)
#2.将互联网上获取的页面源码加载到该对象中
#page_text = response.text
#soup = BeatifulSoup(page_text,'lxml')
3、数据解析
#提供用于数据解析
#print(soup.a)#soup.tagName 返回的是html中第一次出现的tagName标签
#print(soup.div)
#print(soup.find('div')) #等同于soup,div
4、属性定位
#属性定位
#print(soup.find('div',class_= "head_wrapper"))
#print(soup.find_all('a'))# 返回符合要求的所有标签
#select select('某种选择器(id,class,标签,,,选择器)')
#print(soup.select('.head_wrapper'))
#print(soup.select(".head_wrapper > "))
#soup.select('.tang > ul > li > a')[0] #层级选择
#soup.select('.tang > ul a')[0] #跨层选择 空格表示多个层级
5、获取标签之间的文本数据
#获取标签之间的文本数据
print(soup.select('a')[0].string) # 只可以获取该标签下面直系的文本内容
print(soup.select('a')[0].get_text())#text/get_text()可以获取某一个标签中所有的文本内容
print(soup.select('a')[0].text)
6、获取标签中的属性值
#获取标签中的属性值
#print(soup.select('.tang > ul > li > a')[0]['href'])
三、开始爬小说
一般步骤
- 聚焦爬虫 爬取页面中指定的页面内容
- 编码流程
- 指定URL
- 发起请求
- 获取响应数据
- 数据解析
- 持久化存储
在此之前,先要
pip instal requrests
import requrests
1、获取url
首先我选用笔趣阁的《凡人修仙传》作为爬取对象
url = 'https://www.qbiqu.com/7_7365/'
2 、UA伪装
然后,正常的ua伪装(User-Agent)用户代理,里面包含操作系统版本号和使用的浏览器,来伪装成一个正常的请求。按键盘上的F12 进入网站的开发者模式得到。(找不到可以尝试刷新页面)
#UA : User_Agent(请求载体的身份标识)
#UA检测 门户网站的服务器会检测对应请求的载体身份标识,如果监测到的载体身份标识为某一款浏览器
#说明该请求是一个正常的请求。但是如果检测到的载体身份标识不是基于某一款浏览器则表示该请求
#为不正常的请求(爬虫),则服务器就很可能拒绝该次请求
#UA伪装: 将对应的User-Agent封装到一个字典中
headers = {
"User-Agent":&