Python怎样写一个简单的爬虫

在很多人的印象中,爬虫都是灰常高大上的东西,实际上爬虫并不是遥不可及。只要了解了原理,爬虫也十分简单

这里爬虫用的语言为Python

一套爬虫的流程大致是这样(重点,做笔记):
(1)获取初始的URL,该URL网址是用户自己制定的初始爬取的网页
(2)爬取对应URL地址的网页时,获取新的URL地址
(3)将新的URL放入URL队列中
(4)从URL队列中读取新的URL,然后依据新的URL爬取网页,同时从新的网页中获取新的URL地址,重复上述的爬取过程
(5)设置停止条件,如果没有设置停止条件,爬虫会一直爬取下去,知道无法获取新的URL地址为止。设置了停止条件后,爬虫会在满足停止条件时停止爬取

这就是一个通用网络爬虫的基本工作原理,下面通过一个小实例来获得百度的原网址

注:在爬虫途中,会踩很多坑,这些是避免不了的,你只有亲自看着编译器的红色字体,删掉辛辛苦苦写的代码,才能获得经验

重点不在代码,在思路


首先导入Python自带的模块

import urllib.request

urllib库是python自带的爬虫模块,提供了一个uropen方法,用于发送请求至指定url

发送请求:

response = urllib.request.urlopen('https://www.baidu.com/')

我这里是向百度网发送请求,获取到的是一个response数据。

注:这里并不能获取到百度网的源代码,解决方法是把“http”后面的s去掉。

读取网页代码:

html = response.read()

读取代码,没什么好说的

输出

print(html)

现在来看看运行效果

b’\r\n\r\n\t\r\n\r\n\r\n\t\r\n\r\n’

如果想看百度网源代码,请看下面完整代码

#导入模块
import urllib.request
#发送网络请求
response = urllib.request.urlopen('http://www.baidu.com/')
#读取网页代码
html = response.read().decode()
#输出
print(html)

这样就获得了百度网的源代码

我们还可以对我们的网址进行改造,成品如下:

import urllib.request
url = input("输入你要爬取的网页\>")
if url[0:5] == 'https':
    gets = url[5:]
    real_url = 'http' + gets
    try:
        response = urllib.request.urlopen(real_url).read()
        print(response.decode())
    except:
        print("出现错误")
else:
    try:
        html = urllib.request.urlopen(url).read()
        print(html.decode())
    except:
        print("出现错误")

当然,如果这个网站要像headers之类的请求,那么就会失败

未经允许,禁止转载

发布了10 篇原创文章 · 获赞 13 · 访问量 1915

猜你喜欢

转载自blog.csdn.net/realmels/article/details/104321280