python爬虫之爬取简书中的小文章标题

       学习了三个星期的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'<a\sclass=".*?"\starget=".*?"\shref=".*?">(.*)</a>'

小解释一下——匹配以<a\sclass=""开头然后接一个或多个任意字符(非贪婪)(.*?)其次接着匹配target=“接着一个或多个任意字符(非贪婪)(.*?)后面一样,最后移</a>结尾,懂了吗???不懂多观察上图和表达式就会了

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'<a\sclass=".*?"\starget=".*?"\shref=".*?">(.*)</a>'   #正则表达式
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

  • 13
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远去的星光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值