Some Python3 Crawler studying notes from blog in CSDN :)

根据 Jack-Cui Python3网络爬虫教程 实践总结出如下笔记


(一)利用urllib进行简单的网页抓取

urllib

1.urllib.request模块是用来打开和读取URLs的;

2.urllib.error模块包含一些有urllib.request产生的错误,可以使用try进行捕捉处理;

3.urllib.parse模块包含了一些解析URLs的方法;

4.urllib.robotparser模块用来解析robots.txt文本文件.它提供了一个单独的RobotFileParser类,通过该类提供的can_fetch()方法测试爬虫是否可以下载一个页面。

5.urlopen各类参数

requests模块

chardet模块

.read()方法可以读取返回的文本对象

.decode() 可以转码

(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果

geturl()返回的是一个url的字符串;

info()返回的是一些meta标记的元信息,包括一些服务器的信息;

getcode()返回的是HTTP的状态码,如果返回200表示请求成功。

但是好像现在有道翻译网页更新了之后。。好像爬不出来了~

(三):urllib.error异常

HTTPError和URLError一起捕获异常,那么需要将HTTPError放在URLError的前面,因为HTTPError是URLError的一个子类。如果URLError放在前面,出现HTTP异常会先响应URLError,这样HTTPError就捕获不到错误信息了。

这里发现一个有趣的现象,URL上是一个404页面,但是爬的时候没有加ua,所以httperror就变成了403了:)

(四):使用User Agent和代理IP隐藏身份

User Agent

两种方法加UA,注意headers参数要求为字典

  1. 在创建Request对象的时候就传入headers参数
  2. 创建之后用 .add.header() 方法添加

IP代理

捣鼓来捣鼓去,都是出现error~

http.client.RemoteDisconnected: Remote end closed connection without response

然后后来发现,是代理ip的问题,换了个ip之后出现了504~

结果成功没报错之后,没有print的值~这就……

(五):Python3安装Scrapy

自动跳过~因为我已经装了:)

(六):Python3使用Cookie-模拟登陆获取妹子联系方式

这个网站已经关闭注册了,所以,理解代码思路就ok!

利用CookieJar对象实现获取cookie的功能,存储到变量中

使用MozillaCookieJar来实现Cookie的保存

cookie.save的参数说明:

  • ignore_discard的意思是即使cookies将被丢弃也将它保存下来;
  • ignore_expires的意思是如果在该文件中cookies已经存在,则覆盖原文件写入。

cookie.load就是从文件中获取cookie,其余参数不变

(七):使用Beautiful Soup爬取小说

Beautiful Soup

这是个利器啊~~!

手敲代码,果然会手误啊!敲了半天,逻辑没错。。检查了半天才发现~~打少了个字母,然后就报错了!

纠正回来,然后就顺利爬到各章节的页面

成功爬取整本小说的内容。。。瞬间感觉成就感爆棚~~哈哈哈哈!让我捋一捋思路,简化一下代码先~~

Maybe 多线程?

(八):爱奇艺等主流视频网站的VIP视频破解(在线观看+视频下载)

这个暂时先放一放~

(九):使用Selenium爬取百度文库word文章

Mac OS环境配置chromedriver

发现百度文库排版设计发生了变化~没那么好用xpath定位了,然后我就在豆丁上审计了一下元素,发现好像可以~~豆丁上的页面排版跟旧版百度文库好像。。。没什么区别~除了名字不一样之外~~难道??:)

这一节卡了我好久,用到了前面用过的BeautifulSoup和还没完全搞懂的re~~

总结来说就是多次用BeautifulSoup来筛选内容,然后用Selenium来定位元素,通过selenium和jsp脚本,翻页,根据每5页内容放在一个页面内,然后用一个表达式判断啥时候到尾,结束循环,爬完~如果再利用写入文件,就可以把爬去的内容导出,然后就可以~~免去一笔费用啦!!

实际操作的时候,发现不少坑,python的简单,让锁进变得更严谨,有时候自己根本看不出来是锁进的问题。。但他确确实实就是锁进的问题。。一次次的调试,让我渐渐明白selenum的原理。。可以自动翻页,但是。。。爬取的内容还是前5页的~后来发现循环那里没有重新爬页面。。调整之后就可以实现爬整篇文章了,但是想写入文件。。对于 write 方法我还没掌握好,所以又要研究一会儿.

Bingo~

但是对于打印进度的 sys 模块还没完全搞清楚如何弄,再看看官方文档先~

(十):这个帅哥、肌肉男横行的世界(爬取帅哥图)

requests库