很多人没接触过以为编程是统计学是微积分是别的数学逻辑关系。但如果只是读一个网页的话,一小时足够了。
面向对象的编程换成日常用语的话可以直白的说是方便复制粘帖的语言。大多数时候你不需要搞明白你复制的东西具体怎么实现,你只要知道他是干嘛的。
比如你说的爬虫,基础的话你可以完全不理会网络访问的原理。你只要知道有个有re包,有requeset包,有urllib包,有selenium。。。。
然后选一个你觉得不错的包,看下这个包的基本用法。比如selenium里有个webdriver,webdriver.chrome()是使用chrome浏览器,get(”http://abc.com”)是打开abc.com。。。。是的,你只用知道你输入啥对应他会干啥就好。正如上面的例子,你知道输入地址它帮你打开这个网址对应的网页。至于哪个方法保存哪个方法找哪些元素同样如此。用对应的工具包输入你想干嘛。
至此一个特定网页的爬虫就好了,耗时可能不到一小时(看查资料的速度)。当然如果你要求高,想多线程,想对抗反爬虫,想各种精确定位那需要一些知识。而那些知识大多和语言关系不大。
Python下的爬虫库,一般分为3类。
抓取类
urllib(Python3),这是Python自带的库,可以模拟浏览器的请求,获得Response用来解析,其中提供了丰富的请求手段,支持Cookies、Headers等各类参数,众多爬虫库基本上都是基于它构建的。建议学习了解一下,因为有些罕见的问题需要通过底层的方式解决。
requests,基于urllib,但是更方便易用。强烈推荐掌握。
解析类
re:正则表达式官方库,不仅仅是学习爬虫要使用,在其他字符串处理或者自然语言处理的过程中,这是绕不过去的一个库,强烈推荐掌握。
BeautifulSoup:方便易用,好上手,推荐掌握。通过选择器的方式选取页面元素,并获取对应的内容。
lxml:使用
lxml.etree
将字符串转换之后,大家可以使用XPath表达式来解析网页,终极推荐。XPath对于网页解析的支持非常强大,而且很容易上手。它本来是设计出来进行XML元素选择的,但是它同样支持HTML。pyquery:另一个强大的解析库,感兴趣的可以学习下。
综合类
selenium:所见即所得式爬虫,综合了抓取和解析两种功能,一站式解决。很多动态网页不太容易通过requests、scrapy直接抓取,比如有些url后边带了加密的随机数,这些算法不太好破解,这种情况下,只能通过直接访问网址、模拟登陆等方式请求到页面源码,直接从网页元素中解析内容,这种情况下,Selenium就是最好的选择。不过Selenium最初设计出来,是用于测试的。强烈推荐。
scrapy:另一个爬虫神器,适合爬取大量页面,甚至对分布式爬虫提供了良好的支持。强烈推荐。
以上这些是偶个人经常使用的库,但是还有很多其他的工具值得学习。比如Splash也支持动态网页的抓取;Appium可以帮助大家抓取App的内容;Charles可以帮助大家抓包,不管是移动端还是PC网页端,都有良好的支持;pyspider也是一个综合性的框架;MySQL(pymysql)、MongoDB(pymongo),抓到了数据就要存储,数据库也是绕不过去的。
掌握了以上这些,基本上大部分的爬虫任务都难不倒你啦!
你也可以关注偶的头条号,或者偶的个人博客,里边会有一些爬虫类的分享。数洞: www.data-insights.cn/www.data-insight.cn.
python网络爬虫总的来说有五个大的方面:
前端知识——基础爬虫——框架爬虫——分布式爬虫——突破反爬虫
1.前端知识:“网络爬虫”很明显对象是网络,也就是网页。说到网页,这里就涉及到了前端的知识了,不过大家也不要慌,只要懂点必要的HTML5框架、网页的http请求、还有JavaScript、css3的知识就可以了,以这样的水平也是可以学会爬虫的啦。当然,如果要非常精通python网络爬虫的话,深入学习前端知识是必要的。
2.基础爬虫:(1)基础库:urllib模块/requests第三方模块首先爬虫就是要从网页上把大家需要的信息抓取下来的,那么大家就要学习urllib/requests模块,这两种模块是负责爬取网页的。这里大家觉得哪一种用的习惯就用哪一种,选择一种精通就好了。小编推荐读者使用使用requests模块,因为这一种简便很多,容易操作、容易理解,所以requests被称为“人性化模块”。
(2)多进程、多线程和协程:为什么要学着三个知识呢?假如你要爬取200万条的数据,使用一般的单进程或者单线程的话,你爬取下载这些数据,也许要一个星期或是更久。试问这是你想要看到的结果吗?显然单进程和单线程不要满足大家追求的高效率,太浪费时间了。只要设置好多进程和多线程,爬取数据的速度可以提高10倍甚至更高的效率。
(3)网页解析提取库:xpath/BeautifulSoup4/正则表达式通过前面的(1)和(2)爬取下来的是网页源代码,这里有很多并不是大家想要的信息,所以需要将没用的信息过滤掉,留下对大家有价值的信息。这里有三种解析器,三种在不同的场景各有特色也各有不足,总的来说,学会这三种灵活运用会很方便的。推荐理解能力不是很强的朋友或是刚入门爬虫的朋友,学习BeautifulSoup4是很容易掌握并能够快速应用实战的,功能也非常强大。
(4)反屏蔽:请求头/代理服务器/cookie在爬取网页的时候有时会失败,因为别人网站设置了反爬虫措施了,这个时候就需要大家去伪装自己的行为,让对方网站察觉不到大家就是爬虫方。请求头设置,主要是模拟成浏览器的行为;IP被屏蔽了,就需要使用代理服务器来破解;而cookie是模拟成登录的行为进入网站。
(5)异常:超时处理/异常处理,这里不做介绍了,自己去了解一下。(6)数据储存库:文件系统储存/MySQL/MongoDB数据的储存大概就这三种方式了,文件系统储存是运用了python文件操作来执行的;而MySQL要使用到数据库创建表格来储存数据;MongoDB在爬虫里是非常好的储存方式,分布式爬虫就是运用了MongoDB来储存的。各有特色,看自己需要哪种,在灵活运用。
(7)动态网页抓取:Ajax/PhantomJS/Selenium这三个知识点(8)抓包:APP抓包/API爬虫3.框架爬虫:主流且热门的scrapy框架/人性化的pyspider框架框架不止这两种,但是很多时候就只用到了这些框架,所以把这两种掌握熟悉了就可以了。
4.分布式爬虫:python操作Redis/scrapy操作Redis5.突破反爬虫:useragent池/禁用cookies/设置下载延时和自动限速/代理IP池/tor代理/分布式下载器以上就是python网络爬虫的从入门到精通的知识框架,希望这篇文章能让读者高效的学好python网络爬虫。
详细的可以看一下偶的这篇文章,链接是:https://www.toutiao.com/i6611872532448412164/
也可以关注偶,就可以学习其他关于爬虫的知识,首先需要分析评论的地址,然后分析需要什么参数,拼好完整地址进行拉取