文章目录
- 文章目录
- 前言
- 一、python蜘蛛是什么?
- 二、使用步骤
- 1.引入第三方库
- 2.读入html中的有用的数据
- 3.一步一步遍历出有用的数据
- 4.在pycharm终端中打印想要的结果及将get到的内容下载到自建text下
- 5.完整代码
前言
Python是一种灵活多用的计算机程序设计语言, 使用Python进行的编程语法特色更强,具有更高的可读性。Python对于初级程序员来说非常的友好,语法简单易懂,应用广泛,实用性强。Python是一种解释型语言,解释型语言指的是源代码先被翻译成中间代码,再由解释器对中间代码进行解释运行,这就意味着Python的跨平台性很好,所有支持Python语言的解释器都可以运行Python。Python是交互式语言,它可以直接在交互界面直接执行代码,大多数Linux系统都使用Python语言作为基本配置。Python是面向对象语言,这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
一、python爬虫是什么?
网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 通俗地讲,我们把互联网比作一张大蜘蛛网,每个站点资源比作蜘蛛网上的一个结点,爬虫就像一只蜘蛛,按照设计好的路线和规则在这张蜘蛛网上找到目标结点,获取资源。
二、使用步骤
1.引入库
代码语言:javascript复制代码如下(示例):
import requests//引入requests第三方库帮助我们不通过浏览器的情况下直接用python get到某个网站
import re//引入re python内置模块,re为(正则表达式)引入目的帮助我们在爬取网站内容是进行遍历(以便我们能更加清楚的,有条目的爬取想要的内容)
2.先利用浏览器中的检查或开发者工具找到本网站的请求头(user-agent等必要的数据)
代码如下:
代码语言:javascript复制url = a
header = {'User-Agent': 'Googlebot'}
res = requests.get(url=url,headers=header)
该处使用的url网络请求的数据。
3.用导入的re(正则表达式)来进行第一步的遍历
代码语言:javascript复制re_res = re.findall(' <div style="border:1px solid #C8DBD3;padding:20px;line-height:24px;">(.*)</mod>',raw_text,re.DOTALL)
#re.DOTALL:可以将多行内容进行匹配给正则表达式使用(进行修改)
re_res = (''.join(re_res))# 去除[''],将换行符实行为真的换行,并供re.DOTALL使用
text = str(re_res)#将get到的网页内容转换为字符串形式,以便于一下的字符的替换等
text_1 = re.sub('[nu3000 <div>nbrx0c//]', '', text) #第一次过滤:将一系列特殊字符删去
3.用导入的re(正则表达式)来进行第二步的遍历
代码语言:javascript复制#第一种方法:.replace与re.sub用法相同也是将个别字符串进行替换
#text_2 = text_1.replace(r'n','').replace(r'u3000','').replace(r'x0c','').replace(r'"','').replace(r''','')#第二次过滤:将一系列的特殊字符删去
#第二种方法用正则表达式re.sub()语句进行字符串的替换
text_2 = re.sub('nu3000x0c"'','',text_1)
4.在pycharm的终端下先输出get到的结果(进行确认是否是想要的数据),及get到的文件通过python的控制命令自动写入到自建text中
代码语言:javascript复制print(''.join(text_2))
f = open("xxx.txt","w",encoding='utf-8') #encoding=’utf-8‘将编码设为标准的utf-8格式
f.write(text_2)
f.close()
5.完整代码
代码语言:javascript复制import requests
import re
a=input('请输入要get的XXwenku网址:')
url = a
header = {'User-Agent': 'Googlebot'}
res = requests.get(url=url,headers=header)
raw_text = res.text
re_res = re.findall(' <div style="border:1px solid #C8DBD3;padding:20px;line-height:24px;">(.*)</mod>',raw_text,re.DOTALL)
#re.DOTALL:可以将多行内容进行匹配给正则表达式使用(进行修改)
re_res = (''.join(re_res))# 去除[''],将换行符实行为真的换行,并供re.DOTALL使用
text = str(re_res)#将get到的网页内容转换为字符串形式,以便于一下的字符的替换等
text_1 = re.sub('[nu3000 <div>nbrx0c//]', '', text) #第一次过滤:将一系列特殊字符删去
#re.sub用法:re.sub('Q','w',text)将text中的Q都换成w
#第一种方法:.replace与re.sub用法相同也是将个别字符串进行替换
#text_2 = text_1.replace(r'n','').replace(r'u3000','').replace(r'x0c','').replace(r'"','').replace(r''','')#第二次过滤:将一系列的特殊字符删去
#第二种方法用正则表达式re.sub()语句进行字符串的替换
text_2 = re.sub('nu3000x0c"'','',text_1)
print(''.join(text_2))
f = open("xxx.txt","w",encoding='utf-8') #encoding=’utf-8‘将编码设为标准的utf-8格式
f.write(text_2)
f.close()
这里我只是粗略的get了一下,如果大家有兴趣的话可以在此基础上行进改进。
(仅供学习使用!!!如有不法行为,必追究责任!)