学习了三个星期的python基础语法,对python语法有了一个基本的了解,然后想继续深入学习,但不喜欢每天啃书本,太无聊了,只有实战才是练兵的最好效果。听说爬虫技术还是比较好玩的,就搞爬虫,但找了好多资料没有找到合适的资料,最后才找到传说中的合适爬虫初学者的书籍《Python 3网络爬虫开发实战 ,崔庆才著》(文末附书本下载链接),学习了三天,终于完整搞出了自己的第一爬虫,哈哈~。。。。。。进入正题
目标:爬取网页简书中文章小标题
环境:python3.65 pycharm软件
思路:提取网页的源码—>筛选源码—>输出结果(保持文件)
一、提取网页源码
取网页源码方法很多,常用的库有:urllib库,requests库等。。。此处使用requests库,So先导入此库:import requests,然后通过get方法获取网页源码。。。。。
import requests #导入requests库
html = requests.get(‘https://www.jianshu.com/’) #发送请求
print(html.text) #输出网页源码
三行代码就可以获取一个网页的源码,是不是很简单,但去获取一下简书的源码,你会发现什么实际的东西都没有。。。。什么情况???其实是简书采用了一些反爬虫的手段,有没有破解方法,当然有,所谓道高一尺。。。。,只需要在代码的前面加上如下代码即可,模拟浏览器获取网页源码。。。。
headers = {
'User-Agent':'Mozilla/5.0(Macintosh; Intel Mac OS X 10_11_4)\
AppleWebKit/537.36(KHTML, like Gecko) Chrome/52 .0.2743. 116 Safari/537.36'
} #模拟浏览器获取
html = requests.get(‘https://www.jianshu.com/’,headers = headers)
print(html.text)
此次输出的就简书真实的源代码了,完了吗??当然还没有,作为一名菜鸟,我们必须得学会伪装自己,将获取网页源码的这段封装起来就行了。。。。。
二、筛选源码
做完上面步骤,你输出一看,我去!这都是什么跟什么啊,根本找不到在哪好伐?
客官别急啊,我这就去给你叫我们的小。。。图片!图片!
首先我们要一个正则表达式 (什么你不会?请看菜鸟入门教程-->Go)
然后我们看源代码,Yeah 我们找到了其中一张图片是这样的
写出图片的正则表达式:reg = r'(.*)'
小解释一下——匹配以结尾,懂了吗???不懂多观察上图和表达式就会了
import requests
import re
def get_html(url):
headers = {
'User-Agent':'Mozilla/5.0(Macintosh; Intel Mac OS X 10_11_4)\
AppleWebKit/537.36(KHTML, like Gecko) Chrome/52 .0.2743. 116 Safari/537.36'
}
response = requests.get(url,headers = headers)
html = response.text
return html
reg = r'(.*)' #正则表达式
reg_ques = re.compile(reg) #编译一下正则表达式,运行的更快
queslist = reg_ques.findall(get_html('https://www.jianshu.com/')) #匹配正则表达式
三、输出结果
如果直接print()方法输出会输出一个列表,把列表转换为普通的输出就可以看到如下结果:
到此基本可以结束了,也可以将其保存在TXT文件中。。。。我的第一个完整爬虫诞生了,你的呢。。。。
Python 3网络爬虫开发实战PDF文件的链接: https://pan.baidu.com/s/1aMwfPPNkmYYNZiPR9ltDwg 密码: scpm