Response对象的几点说明:

  Response对象用来描述一个HTTP响应,Response只是一个基类,根据相应的不同有如下子类:

    TextResponse,HtmlResponse,XmlResponse

  仅以HtmlResponse为例,HtmlResponse在基类Response的基础上,还多了很多新的方法。

一.使用Selector

    因为链接也是页面中的数据,所以可以使用与提取数据相同的方法进行提取。在分析网页时可以通过jupyter notebook构造selector对象进行分析(selector对象有xpath和css方法)

      import requests

      from scrapy.selector import Selector

    

      res=requests.get("http://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html")

      selector=Selector(response=res)

二 .使用 scrapy框架中的linkextractors模块

    用法见相关资料

  1.   le.extractor_links(response)中的response指的是HtmlResponse

  2.HtmlResponse的构造方法:

from scrapy.http import HtmlResponse
from scrapy.linkextractors import LinkExtractor
import requests

#先构造Response对象,再用Response对象构造HtmlResponse对象,从而能够使用linkextractor模块

ResStack=requests.get("http://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html")

res = HtmlResponse(url="http://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html" , body=ResStack.text , encoding="utf-8")

注:1.HtmlResponse包含多种参数,具体如何使用可查书

  2.HtmlResponse也包含多种方法,比如css,xpath,text等方法,也可以通过jupyter notebook进行网页分析,而且也可以使用linkextractor提取链接,更加方便

scrapy爬虫提取网页链接的两种方法以及构造HtmlResponse对象的方式的更多相关文章

  1. 可采用两种方法得到一个EJB对象

    (本文是转载其他人的技术文章,觉得说得挺浅显易懂,特借来学习)     在前面学习的例子中,只有一个EJB,但是对于一个真实的项目,EJB的数量可以有很多,而且EJB之间也会互相调用,那么在一个EJB ...

  2. python爬虫-提取网页数据的三种武器

    常用的提取网页数据的工具有三种xpath.css选择器.正则表达式 1.xpath 1.1在python中使用xpath必须要下载lxml模块: lxml官方文档 :https://lxml.de/i ...

  3. C++类的实例化的两种方法

    C++ 类的实例化有两种方法: 直接定义对象: 先定义一个类:   class A { public: A(); virtual ~A(); ... ... };   类实现略. 用的时候: A a; ...

  4. 在Scrapy中如何利用Xpath选择器从HTML中提取目标信息(两种方式)

    前一阵子我们介绍了如何启动Scrapy项目以及关于Scrapy爬虫的一些小技巧介绍,没来得及上车的小伙伴可以戳这些文章: 手把手教你如何新建scrapy爬虫框架的第一个项目(上) 手把手教你如何新建s ...

  5. 获取网页URL地址及参数等的两种方法(js和C#)

    转:获取网页URL地址及参数等的两种方法(js和C#) 一 js 先看一个示例 用javascript获取url网址信息 <script type="text/javascript&q ...

  6. 关于网页授权的两种scope的区别说明

    关于网页授权的两种scope的区别说明 1.以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的.用户感知的就是直接进入了回 ...

  7. JMeter接口测试-提取动态列表最后一个值的两种方法

    前言 在用JMeter做接口测试时,我们经常会遇到,一个接口返回一个json串,在这个json串中,某个节点的值是一个列表,而且这个列表的长度是动态变化的.今天我们来学习两种提取动态列表最后一个值的两 ...

  8. (网页)angular中实现li或者某个元素点击变色的两种方法(转)

    转自脚本之家: 本篇文章主要介绍了angular中实现li或者某个元素点击变色的两种方法,非常具有实用价值,需要的朋友可以参考下 本文介绍了angular中实现li或者某个元素点击变色的两种方法,分享 ...

  9. [转]Delphi调用cmd的两种方法

    delphi调用cmd的两种方法vars:string;begins:='cmd.exe /c '+edit1.Text+' >c:\1.txt';winexec(pchar(s),sw_hid ...

随机推荐

  1. python djangjo 文件上传

    视图: request.GET 获取数据 request.POST   提交数据 request.FILES  获取文件用 checkbox 等多选的内容   request.POST.getlist ...

  2. [洛谷P4299] 首都

    题目传送门 还是维护子树信息. 但是这里多了一个找重心的操作. 这里有一个关于树重心的结论,据说可以用反证法证明.反正我不会证 就是:新的重心一定在原来两个重心之间的那条树链上. 这样我们逐步缩小搜索 ...

  3. curl模拟

    header('content-type:text/html;charset=utf-8');function curlPost($url,$data,$method){ $ch = curl_ini ...

  4. 网站log记录

    记录网站日志可以清晰的把控网站运行状态. 程序中对外部系统和模块的调用前后都需要记日志,方便接口调试. 数据库操作处需要记日志.

  5. –IDEA+Maven+JavaWeb+tomcat项目搭建(图文并茂,详细)

    一.创建Maven项目 1:如果刚打开IDEA,显示的是这个页面,我们直接单击 Create New Project(创建项目) 或者 File-> New-> Project 2:选中左 ...

  6. zookeeper 单机部署

    第一步:下载安装包 这里以3.4.11为例  https://archive.apache.org/dist/zookeeper/ 点进去看: 下载tar文件 第二步:上传到服务器 使用ftp工具上传 ...

  7. iOS多线程开发之NSOperation

    一.什么是NSOperation? NSOperation是苹果提供的一套多线程解决方案.实际上NSOperation是基于GCD更高一层的封装,但是比GCD更加的面向对象.代码可读性更高.可控性更强 ...

  8. JAVA:初识Java · Xer97

    1. 什么是Java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征. Java语言作为静 ...

  9. angular知识点(2)

    angular知识点(2) 1.为了代码规范,对于需要自动加载的依赖,需要在前面加上注释,注释为://@ngInject 或者是/*@ngInject*/ 2.ngSwitch的应用 在需要用到选择出 ...

  10. AndroidStudio实现AIDL

    AIDL的使用步骤 aidl远程调用传递的参数和返回值支持Java的基本类型(int long booen char byte等)和String,List,Map等.当然也支持一个自定义对象的传递. ...