Python3 基础爬虫简介

一个新手
一个新手asal
2017-09-25 10:53:482405semak imbas


python3 基础爬虫入门心得

第一次写博客,有点紧张,不喜勿喷。
如果有不足之处,希望读者指出,本人一定改正。

学习爬虫之前你需要了解(个人建议,铁头娃可以无视):
- **少许网页制作知识,起码要明白什么标签...**
- **相关语言基础知识。比如用java做爬虫起码会用Java语言,用python做爬虫起码要会用python语言...**
- **一些网络相关知识。比如TCP/IP、cookie之类的知识,明白网页打开的原理。**
- **国家法律。知道哪些能爬,哪些不能爬,别瞎爬。**

如标题,本文中所有代码使用python3.6.X。

首先,你需要安装(pip3 install xxxx 一下就OK了)

  1. requests 模块

  2. 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())

百度百科的词条就出来了。
类似的方法也能爬一些小说、图片、头条之类的,绝不仅限于词条。
如果关掉这篇文章你也能写出这个程序,那恭喜你,入门了。记住,千万别背代码。

骤都省略了…整个程序有点粗糙…见谅啊….溜了溜了( ̄ー ̄)……

Atas ialah kandungan terperinci Python3 基础爬虫简介. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn