Python爬虫自学进行简单的文本抓取

最近一周开始了python的系统学习,对基础进行了狠狠的扩展和再次夯实,发的一些博客文章也都是每天学习到的重点,由于没有太多的时间,而且还比较累,所以就没有对知识点进行梳理,只是复制粘贴过来每天的知识点,大家也可以看到量是比较多的,而且之前的30天才学完基础,变成了现在的三周工作日时间,一共15天的时间就全部结束,所以没有太多的时间来写一些自己感兴趣而且自己学习理解的知识。在昨天,忙里偷闲抽出一天的时间,自己学了学爬虫,之前一直觉得这个东西入门难,学好也难,但是真的接触之后才发现这个东西没有想象中的难,接下来大家可以跟我一起学学如何进行简单的网页文本数据的抓取,其实这个就是一个爬虫,大家学会了也可以说自己也会做爬虫了。


废话结束,接下来我们进入爬虫的探索当中去,我们在再浏览网页的时候可以看到,在文本中有很多的文本数据,我们可以去搞这些文本下来,其实最开始,我就是想搞 www.xzbu.com论文网 他们上边的论文下来,在大学的时候每次搜到论文了 可是复制的时候就需要关注微信号然后才能复制,真的很烦,所以第一个就去弄一下他们。


首先这些东西等学完基础的知识再来看这个文章,这样就会非常清楚怎样的了。我在这里是不会讲的太明白的。

首先我们要访问网页的时候我们需要导入模块    

import urllib.request

导入模块之后 我们需要向指定的路径url路径发起网络请求。发起请求之后我们会得到一个返回的请求体。

response = urllib.request.urlopen("url路径")

得到的返回体之后我们就可以从中来得到数据。

# 读取文件的全度内容,会把读取的数据复制给一个字符串变量
data = response.read().decode("utf-8")

这个后面的utf-8是文件编码格式,所以我们去网站右键 检查 在他们html的属性能得到编码格式,这个不要弄错了

这个时候我们就从网上得到数据data了

这个时候我们就可以把我们从网上得到的数据存到我们本地的文件里了

with open("文件名","w",encoding='utf-8') as f:
    f.write(data)

这个时候我们就把文件写入到 我们制定的文件名中了,所以这个时候我们就可以在文件中查看我们访问到的数据。


这个其实就是一个简单的爬虫,但是我们会发现一个问题,当我们访问https的网址的时候却访问不到数据,因为有爬虫,就会有反爬虫,https是一个安全的网页,我们访问时时用代码去访问的,所以他们能立马识别到,这个是一个爬虫,所以我们获取不到数据,所以我们要对访问请求体进行伪装,让他们觉得我们是一个正常的浏览器访问网页。


所以这个时候我们设置一个头结点。

headers = {
    "User-Agnet":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"
}

这个可以从我们的网页 检查,network 里在name下的文件,点开右侧会出现Headers,翻到最下面 有个 user-agent 把里面的数据复制下来就可以了。

这个时候我们就伪装成一个浏览器了,之后再进行访问,创建一个请求体。

#设置一个请求体,一般都叫req
req = urllib.request.Request(url,headers=headers)

和上边的一样 我们就可以对数据处理

response = urllib.request.urlopen(req)

存到文件里。

with open("baidu.html","w",encoding='utf-8') as f:
    f.write(message)

这个时候我们都已经把整个网页的内容给爬下来了。之后的就是对数据的处理,我们从网页上寻找数据,用正则表达式对数据进行处理,之后存的数据就是我们爬下来的文本内容。

这基本就是一个爬虫基本流程,最后把我昨天写的爬虫给发出来,大家可以把自己在论文网上要爬取的文章那一页网址复制改一下 之后运行就可以得到内容了。就学了一天的内容,写的还是比较low的 在后边的学习中慢慢改进,致力于成为一名资深的爬虫师而加油,奋斗!

import  urllib.request
import re
url = "https://www.xzbu.com/3/view-13077423.htm"#网页在这里,把这个给改了就可以了
headers = {
    "User-Agnet":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"
}
#设置一个请求体,一般都叫req
req = urllib.request.Request(url,headers=headers)
response = urllib.request.urlopen(req)
data = response.read().decode("utf-8")
#取到数据 进行数据处理 re
print(data)
re_m = re.compile(r"</FONT>(.*?) <!--endprint-->",re.S)
message = re_m.findall(data)
message = message[0]
message = message.replace("<br>","\n")
print(message)
with open("baidu.html","w",encoding='utf-8') as f:
    f.write(message)


这个仅限是他们这个网站上的数据爬取

猜你喜欢

转载自blog.csdn.net/qq_37235798/article/details/81460632