第一次写博客,有点紧张,不喜勿喷。
如果有不足之处,希望读者指出,本人一定改正。
学习爬虫之前你需要了解(个人建议,铁头娃可以无视): - **少许网页制作知识,起码要明白什么标签...** - **相关语言基础知识。比如用java做爬虫起码会用Java语言,用python做爬虫起码要会用python语言...** - **一些网络相关知识。比如TCP/IP、cookie之类的知识,明白网页打开的原理。** - **国家法律。知道哪些能爬,哪些不能爬,别瞎爬。**
如标题,本文中所有代码使用python3.6.X。
首先,你需要安装(pip3 install xxxx 一下就OK了)
requests 模块
BeautifulSoup 模块(或lxml 模块)
这两个库功能十分强大,requests用于发送网页请求和打开网页,beautifulsoup和lxml则用于解析内容,提取你想要的东西。BeautifulSoup偏向于正则表达式,lxml则偏向于XPath。因为本人用beautifulsoup库比较习惯,这篇文章主要应用beautifulsoup库,lxml不做过多赘诉。(用之前建议先看文档)
爬虫的主要结构:
管理器:管理你要爬取的地址。
下载器:把网页信息下载下来。
筛选器:从下载到的网页信息中筛选出你所需要的内容。
储存器:把下载到的东西存你想存的地方。(根据实际情况,可有可无。)
在我所接触到的所有的网络爬虫基本都逃不出这个结构,大到sracpy小到urllib。这个结构知道就行,不用死记,知道它的好处就是在写的时候起码能知道自己在写什么,出BUG的时候知道在哪动手DEBUG。
前面废话有点多….正文如下:
本文以爬取https://baike.baidu.com/item/Python(python的百度词条为例):
(因为截图太麻烦..这将是本文唯一一张图)
想要爬取python的词条内容,首先,你要知道你所要爬取的网址:
url = 'https://baike.baidu.com/item/Python'
因为只需要爬这一页,管理器OK。
html = request.urlopen(url)
调用一下urlopen()函数,下载器OK
Soup = BeautifulSoup(html,"html.parser") baike = Soup.find_all("p",class_='lemma-summary')
利用Beautifulsoup库里的beautifulsoup函数合find_all函数,解析器OK
在这里说一句,find_all函数的返回值是一个列表。所以输出时要循环打印。
由于本例不需要保存,直接打印就行,所以:
for content in baike: print (content.get_text())
get_text()的作用是提取出标签里的文本。
把上面的代码整理一下:
import requestsfrom bs4 import BeautifulSoupfrom urllib import requestimport reif __name__ == '__main__': url = 'https://baike.baidu.com/item/Python' html = request.urlopen(url) Soup = BeautifulSoup(html,"html.parser") baike = Soup.find_all("p",class_='lemma-summary') for content in baike: print (content.get_text())
百度百科的词条就出来了。
类似的方法也能爬一些小说、图片、头条之类的,绝不仅限于词条。
如果关掉这篇文章你也能写出这个程序,那恭喜你,入门了。记住,千万别背代码。
骤都省略了…整个程序有点粗糙…见谅啊….溜了溜了( ̄ー ̄)……
以上是Python3 基础爬虫简介的详细内容。更多信息请关注PHP中文网其他相关文章!