之前因为想研究怎么让esp8266上校园网,折腾半天,请教大佬后,说要先学爬虫,就能知道怎么模拟登录上网了。大佬学的是c#,我学的是python,于是就开始学习了python爬虫,这是学习中觉得好玩的事,也遇到了不少困难。
两种操作方式,我们一般用第二种爬取网页
聚焦爬虫 爬取页面中指定的页面内容
编码流程
指定URL
发起请求
获取响应数据
数据解析
持久化存储
在此之前,先要
首先我选用笔趣阁的《凡人修仙传》作为爬取对象
然后,正常的ua伪装(User-Agent)用户代理,里面包含操作系统版本号和使用的浏览器,来伪装成一个正常的请求。按键盘上的F12 进入网站的开发者模式得到。(找不到可以尝试刷新页面)
获取cookie
requests.session进行状态保持
requests模块中的Session类能够自动处理发送请求获取响应过程中产生的cookie,进而达到状态保持的目的。
因为一直远程连接断开(Remoto end closed connection without response ),发现加上这句后,会好很多,用法和requests一样,requests.get();requrests.post();
session.get(url,headers)
URL:Internet上的每一个网页都具有一个唯一的名称标识,通常称之为URL(Uniform Resource Locator, 统一资源定位器)。它是www的统一资源定位标志,简单地说URL就是web地址,俗称“网址”。
防止因为网络不好问题请求不到网站,我们使用while语句
后来遇到中文报错问题
class 用.box_con
id 用#list 获取
dd_list 为标签dd的列表
title 为《凡人修仙传的目录》
detail_url为目录的详情页
大佬:ua不太可能封,因为ua是浏览器标识,同样浏览器在windows下会给出同样的ua,一封一大片,所有使用同一个操作系统,同一个浏览器的人都会是一样的ua,所以如果封了我的ua,就是拒绝所有在windows上用edge的人访问网站。
所以UA就获取自己浏览器下的就好。
大佬:封你的公网ip,如果你用的njit,那就是学校的出口ip,整个学校都开不了。
robots.txt协议
君子协议。规定了网站中哪些数据可以被爬虫爬取哪些数据不可以被爬取。在网址后加/robots.txt
淘宝君子协议
自写python代码
大佬用c#写了一个还更好,他的运行结果,还加上了双线程爬取。