zoukankan      html  css  js  c++  java
  • Python定向爬虫实战

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7019963.html 

    一:requests模块介绍

    requests是第三方http库,可以十分方便地实现python的网络连接,完美替代了urllib2模块。

    二:原理

    使用requests实现定向爬虫需要两步:首先使用requests获取目标网页的源代码;然后使用requests与正则表达式从中提取信息。

    获取源码有两种方式:

    使用requests.get(url).text可以直接获取无反爬虫机制的网页的源码;

    但对于有反爬虫机制的网页,上面的简单手段是不能完整获取到网页源码的,只能读取到网页中robot中的内容,提示你该网页禁止爬取。

    此时,可以修改http头,然后在requests.get时把头传进去,戴上伪装帽子,即可正常访问目标网页并获取源码了。

    首先,我们用浏览器打开目标网页,右键—>审查元素(火狐)、检查(谷歌)

    然后在打开的面板中,选择 NetWork 选项卡。

    最后,在选项卡下面一行行的网络请求中随便点击一个,打开详情,拖到最下面RequestHeader项的底部,找到User-Agent,复制它。

    这个User-Agent就是我们需要的伪装了,我们用这个为爬虫模拟出一个浏览器访问页面的请求,从而绕过网页的反爬虫协议。

    #coding:utf8
    import requests
    #从浏览器中复制过来的伪装头
    head={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
    #使用伪装头发出请求
    html=requests.get("https://www.bilibili.com/",headers=head)
    #指定编码格式,避免中文乱码
    html.encoding= 'utf8'
    #获取网页源码
    print html.text

    然后,就可以用正则表达式从网页源码提取内容了。

    三:实战

    #coding:utf8
    import requests
    import re
    #从浏览器中复制过来的伪装头
    head={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
    #使用伪装头发出请求
    html=requests.get("https://git.oschina.net/",headers=head)
    #指定编码格式,避免中文乱码
    html.encoding= 'utf8'
    #获取网页源码
    src=html.text
    #使用正则表达式提取内容,这里提取网页中的http链接:注意使用 () 提取想要的匹配信息
    urls=re.findall('href="(http.*?)"',src)
    for url in urls:
        print url

    结果:

    http://www.oschina.net
    http://git.mydoc.io
    http://weibo.com/mayunOSC
    http://www.51idc.com/
  • 相关阅读:
    域名解析 A记录 MX记录 CNAME记录 TTL
    在SQL Server Management Studio中还原数据库
    Intel 2200BG无线网卡在2003下的使用
    Javascript 如何得到input type="radio" 的值?
    建立自动备份的维护计划
    [zt]再谈QQ自动登陆器:提供C#源码下载(下)
    Ajax 和 XML: 借鉴最优秀的 Ajax 应用程序
    征服 Ajax 应用程序的安全威胁
    为FckEditor增加插件,添加自定义的功能按钮ToolBarButton
    开发端到端的 Ajax 应用程序,第 1 部分: 用一个场景设置 Ajax 环境
  • 原文地址:https://www.cnblogs.com/ygj0930/p/7019963.html
Copyright © 2011-2022 走看看