![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
爬虫笔记
学习爬虫过程的笔记及自己的某些感悟
唯念欢
这个作者很懒,什么都没留下…
展开
-
爬虫_08_get方法与post方法【自我感悟】
在写爬虫时学到了get方法和post方法,但是我经常搞不懂get方法和post方法的区别,在我去网上看了许多blog以及ae上的解释,自我感觉似乎是有了一点浅薄的理解。【我并没有学习前端知识,所以我无法用http这些协议来解析get方法和post方法的区别,只能以我自己能够理解的话讲出来,以下纯属个人理解,如有不对欢迎各位大佬提出!get方法是对服务器发送一个请求,获取服务器上的数据,也就是对内容进行检索,这个时候我们就需要通过get方法模拟浏览器向服务器发送请求,来获取这个网页上的数据。原创 2023-07-05 21:51:23 · 466 阅读 · 0 评论 -
爬虫_022_scrapy_日志文件
为了避免检查不到报错,一般不动日志等级,而是加一个日志文件。这时终端会简洁,会生成一个日志文件在spiders文件夹下。改变日志级别是在settings中加。原创 2023-07-14 18:50:36 · 63 阅读 · 0 评论 -
爬虫_021_scrapy_访问第二链接
【图片来源于网络,如果侵权请联系我删除】将当前页面所有符合我们要求的链接提取出来。基本操作与之前类似,在这里不过多叙述。链接提取器【crawlspider】爬取读书网【多页面爬取】直接上代码【电影天堂】pipelines文件。\d+ 表示多为数字。原创 2023-07-14 17:48:19 · 563 阅读 · 0 评论 -
爬虫_020_scrapy_管道
4.在管道中定义两个函数【open_spider(self, spide)、close_spider(self, spider)】管道有非常多,这个300就是管道的值,管道的使用是有优先级的,范围是1-1000,值越小,管道的优先级就越高。2.在爬虫文件中获取数据并将其通过yield方法交给管道【pipelines】3.开启管道【settings中取消ITEM_PIPELINES 的注释】要想使用管道【pipelines文件】就必须在settings文件中开启管道。1.在items文件中定义结构数据。原创 2023-07-12 13:59:25 · 504 阅读 · 1 评论 -
爬虫_019_scrapy_scrapyshell
2.在根目录含有scrapy的文件夹下的终端运行 scrapy shell url【这个url是自己想访问的url】scrapy shell是一个scrapy终端,免去了在每次修改代码后运行spider文件的麻烦。3.在运行了第二步后,可以直接在终端中使用response。原创 2023-07-12 10:22:02 · 48 阅读 · 1 评论 -
爬虫_018_scrapy
3.在创建好的文件中,name是爬虫的名字,用于运行爬虫的时候使用的值;转到spiders后【在终端输入 scrapy genspider 爬虫文件名字 要爬取的网页的url】,注意网页的url不需要添加http://,创建文件系统会自动添加。运行之后会遇到‘君子协议’【在域名后有robots.txt】 --- 注释第二级的项目名称下的settings中的ROBOTSTXT_OBEY。items.py 定义数据结构的地方【爬取的数据都包含哪些】结构性数据:网页源码中,具有类似的相似的结构形的数据。原创 2023-07-12 09:56:38 · 493 阅读 · 1 评论 -
爬虫_017_requests库_cookie登录【绕过验证码】
2.在login文件中拿到url,有些网站可能不需要登录就可以获取反应的数据,有些则需要登录,找到payload里的数据,观察哪几个是变量,一般除了邮箱密码和登录之外都是变量。3.爬取网页源码,使用xpath【etree.HTML】方法来定位需要获取的元素,获取需要的值,这种情况下一般变量都会带有hidden属性。4.在 3 中我们会获取到验证码的图片地址,这个时候我们需要将图片下载到本地【urllib.request.5.下载ddddocr【一个开源免费的识别验证码的包,准确率并非100%】原创 2023-07-10 17:35:32 · 173 阅读 · 1 评论 -
爬虫_010_ajax请求
需要改变的只是将data数据进行编码,然后将url、编码后的data和headers通过Request方法一起提交给服务器。因为爬取kfc官网需要我们提交查询的店面地址,所以是属于post的提交数据给服务器进行处理。仔细观察应该是start变化了,所以我们根据start变化规律来即可【start=(page-1)*20】因为这里用的方法在之前已经提到过,所以就不多做赘述。1.找到豆瓣电影的页面规律。二、post请求【kfc官网】一、get请求【豆瓣】原创 2023-07-06 11:01:48 · 442 阅读 · 1 评论 -
爬虫_011_cookie登录&handler处理器
在需要进入个人信息页面时,服务器会跳转到登录页面,登录页面的编码不是utf-8,个人信息页面是utf-8,故在爬取个人信息页面的数据时,会报错编码错误,此时我们就需要cookie登录了。【在请求头中最好留下refere】二、handler处理器【更高级的请求头】-- 处理动态cookie和代理ip不能进行请求定制。refere是防盗链,判断当前页面是不是由上一个路径跳转。2.通过handler对象获取opener对象。1.获得handler对象。3.调用open方法。4.获取百度首页源码。原创 2023-07-06 14:04:05 · 629 阅读 · 1 评论 -
爬虫_012_代理IP
ProxyHandler里有一个proxies参数,这个参数是你的代理ip,需要以字典形式存储。win+r--输入cmd--输入ipconfig--查看ipv4数字。二、使用代理--将上一篇的HTTpHandler换成ProxyHandler【详情见。一、如何查询当前ip?原创 2023-07-06 14:44:22 · 1124 阅读 · 1 评论 -
爬虫_013_解析【xpath、jsonpath】
2.xpath的使用【解析本地文件、直接解析服务器响应的数据--response.read().decode('utf-8')】服务器响应数据用的最多。点击code--download zip--解压缩--打开chorme--扩展程序--直接将已经压缩的文件夹拖进去,ctrl+shift+x使用。/2/ 谓词查询 //div[@id] 【div是标签名字,类似于/1/中的ul和li之类的路径关系,@id是div中的标签中所含的属性】/1/ 路径查询:// 所有节点,不考虑层级关系。/1/ 获取百度的源码。原创 2023-07-08 08:58:20 · 506 阅读 · 0 评论 -
爬虫_014_解析_bs4【BeautifulSoup】的使用
BeautifulSoup和 lxml 一样都是html的解析器,效率相比于xpath来说较低。如果要根据class的值来找标签,需要在class后加下划线。BeautifulSoup默认打开的编码是gbk。(3)select【使用较多】1.导入本地html文件。2.根据标签来找节点。原创 2023-07-08 20:53:48 · 29 阅读 · 0 评论 -
爬虫_015_selenium
3.find方法的xpath 根据xpath路径获取对象【写xpath路径--定位百度一下】3.获取元素文本【获取的并非标签里的value值,而是显示在 >< 中间的文本】4.tag_name方法根据标签名获取对象【标签名--定位文本输入框】5.find方法的css方法--根据bs4的语法实现【定位百度一下】1.获取元素属性【获取input标签的class值】2.根据标签属性的属性值找对象【定位文本输入框】selenium可以驱动真实的浏览器进行执行json代码。selenium的元素定位。原创 2023-07-09 10:03:42 · 90 阅读 · 1 评论 -
爬虫_016_requests库
r.get(url, params, kwargs)【url:地址;2. r.encoding属性【 设置编码格式来处理返回数据中的中文乱码】5. r.status_code属性【返回状态码】4. r.content属性【返回二进制数据】1. r.text属性【有中文会返回乱码】3. r.url属性【返回我们请求的url】r.status_code:响应的状态码。6. r.headers【返回响应头】r.content:响应的字节类型。r.headers:响应的头信息。r.url:获取请求的url。原创 2023-07-09 12:54:49 · 1574 阅读 · 1 评论 -
爬虫_01_简介
这一个系列是为了记录我在爬虫学习过程中遇到的问题,感悟以及笔记。原创 2023-07-03 23:01:00 · 18 阅读 · 0 评论 -
爬虫_04_urllib库使用
5.将二进制的数据转换为字符串【解码,decode('编码的格式(普遍是utf-8')】4.获取html的源码【read方法返回的是字节形式的二进制数据】1.引用urllib库。3.模拟浏览器发送请求。一、使用urllib库访问百度首页。原创 2023-07-04 20:55:01 · 464 阅读 · 0 评论 -
爬虫_03_序列化与反序列化
如果要将一个对象【列表,元组,字典】写入本地文件,我们就需要对这个对象进行序列化。dump:在将python对象转化为json对象的同时写入一个指定文件。load:将json对象转化为python对象的同时进行读取。序列化:按照某种规则,将内存中的数据转化成字节序列,保存到文件中。dumps:将python对象转化为json对象。loads:将json对象变为python对象。反序列化:把文件中的字节恢复成数据到内存中。对象 ---> 字节序列 【序列化】字节序列 ---> 对象 【反序列化】原创 2023-07-04 14:12:29 · 103 阅读 · 0 评论 -
爬虫_06_urllib_下载爬取的数据以及请求对象的定制
一些端口号【mysql:3306;redis:6379;mongodb:27017】urlreterieve里有两个参数【url,filename】2.User-Agent定制【以edge浏览器的ua为例子】3.请求对象的定制【request】原创 2023-07-04 22:04:53 · 106 阅读 · 0 评论 -
爬虫_02_文件的操作
默认情况下,read是一个字节一个字节读,效率低下,readline是一行一行的读【只能读取一行】,readlines是一行一行读,可以读取多行,并且以列表形式返回。在我以前编写代码的过程中,我的注释几乎就是翻译式注释,现在我理解了我应该只需要对一些复杂的代码进行注释以便自己以后阅读代码。文件夹暂时不可以用open创建,需要手动创建,但是可以在已经创建好的文件夹中创建文件。在文件打开之后必须关闭【如果不关闭则会占用cpu内存,关闭方法如上close】。原创 2023-07-04 13:34:53 · 41 阅读 · 0 评论 -
爬虫_07_get请求的方法【编解码】
在爬取第一遍时非常顺利的就将原码爬取下来了,但是第二遍就遭到了百度的反爬,我猜想大概是cookie没有写进headers中吧,在以后学习到这个部分我再回过来将这个代码完善一下。一、get请求的quote方法【使用urllib.parse库】---> 一般解决单个参数。二、get请求的urlencode方法【urllib.parse库】 ---> 一般解决多个参数。quote:将汉字转化为unicode编码。1.导入urllib.parse库。2.将汉字转化为unicode编码。三、爬取李白简介源码。原创 2023-07-05 21:11:50 · 1095 阅读 · 0 评论 -
爬虫_05_urllib_一个类型和六个方法
response.read(num),num指字节数,num是几返回几个字节。response.getcode()【正常状态码为200】一个类型【HTTPResponse(response的类型)】2.按行读【只能读取一行】3.一行一行读,全部读完。原创 2023-07-04 21:16:40 · 199 阅读 · 0 评论 -
爬虫_09_post请求【百度翻译】
而post请求的url的参数并不能直接进行拼接,而是放在data中进行发送,无字数限制,直观的url地址中不会显示post请求的参数。在详细翻译中会遇到反爬手段,这是因为请求头中的数据没有给全,这时候需要将请求头的数据贴给headers【但是其中某些数据是一定要注释的’Accept-Encoding: gzip, deflate, br‘】在对百度翻译进行post请求时需要找到自己需要的数据,【F12--network--sug--preview;替换:'$1':'$2',json.loads方法。原创 2023-07-05 22:59:07 · 1615 阅读 · 0 评论