提交 8d9e83b1 编写于 作者: J Jiez Tee

翻译 row 159 to row 260

上级 0e952a24
......@@ -158,7 +158,7 @@ class QuotesSpider(scrapy.Spider):
### 提取数据
学习如何使用scrappy提取数据的最佳方法是使用shell尝试选择器 [Scrapy shell](../topics/shell.html#topics-shell) . 运行:
学习如何使用Scrapy提取数据的最佳方法是使用shell尝试选择器 [Scrapy shell](../topics/shell.html#topics-shell) . 运行:
```py
scrapy shell 'http://quotes.toscrape.com/page/1/'
......@@ -167,7 +167,7 @@ scrapy shell 'http://quotes.toscrape.com/page/1/'
注解
在从命令行运行scrappyshell时,请记住始终将URL括在引号中,否则URL将包含参数(即。 `&` 字符)不起作用。
在从命令行运行Scrapy shell时,请记住始终将URL括在引号中,否则URL将包含参数(即。 `&` 字符)不起作用。
在Windows上,使用双引号:
......@@ -197,7 +197,7 @@ scrapy shell "http://quotes.toscrape.com/page/1/"
```
使用shell,可以尝试使用 [CSS](https://www.w3.org/TR/selectors) 使用响应对象
您可以使用shell试试选择有 [CSS](https://www.w3.org/TR/selectors) 响应对象的元素
```py
>>> response.css('title')
......@@ -205,7 +205,7 @@ scrapy shell "http://quotes.toscrape.com/page/1/"
```
跑步的结果 `response.css('title')` 是否调用类似列表的对象 [`SelectorList`](../topics/selectors.html#scrapy.selector.SelectorList "scrapy.selector.SelectorList") ,表示 [`Selector`](../topics/selectors.html#scrapy.selector.Selector "scrapy.selector.Selector") 对象,这些对象环绕XML/HTML元素,并允许您运行进一步的查询,以细化所选内容或提取数据。
运行 `response.css('title')` 的输出结果是个列表形似的对象,即为 [`SelectorList`](../topics/selectors.html#scrapy.selector.SelectorList "scrapy.selector.SelectorList") 。这包含一组封装了XML/HTML元素的 [`Selector`](../topics/selectors.html#scrapy.selector.Selector "scrapy.selector.Selector") 对象,并允许您进行进一步的查询,以细化所选内容或提取数据。
要从以上标题中提取文本,可以执行以下操作:
......@@ -215,7 +215,7 @@ scrapy shell "http://quotes.toscrape.com/page/1/"
```
里有两件事需要注意:一是我们已经添加了 `::text` 对于CSS查询,意味着我们只想直接选择内部的文本元素 `<title>` 元素。如果我们不指定 `::text` ,我们将得到完整的标题元素,包括它的标记
有两件事需要注意:一是我们添加 `::text` 以查询CSS,意味着我们只要直接选择 `<title>` 元素内的文本元素。如果我们不指定 `::text` ,我们将得到包含标签的完整title元素
```py
>>> response.css('title').getall()
......@@ -223,7 +223,7 @@ scrapy shell "http://quotes.toscrape.com/page/1/"
```
一件事是呼叫的结果 `.getall()` 是一个列表:一个选择器可能返回多个结果,所以我们提取所有结果。当您知道您只想得到第一个结果时,就像在本例中一样,您可以这样做:
外,调用 `.getall()` 的结果是个列表:一个选择器有可能回返回多个结果,所以我们提取所有结果。假如您只想得到第一个结果的话,您可以这样做:
```py
>>> response.css('title::text').get()
......@@ -231,7 +231,7 @@ scrapy shell "http://quotes.toscrape.com/page/1/"
```
作为替代方案,您可以写:
您也可以这样写:
```py
>>> response.css('title::text')[0].get()
......@@ -239,11 +239,11 @@ scrapy shell "http://quotes.toscrape.com/page/1/"
```
然而,使用 `.get()` 直接在A上 [`SelectorList`](../topics/selectors.html#scrapy.selector.SelectorList "scrapy.selector.SelectorList") 实例避免了 `IndexError` 回报 `None` 当它找不到任何与所选内容匹配的元素时
不过,当[`SelectorList`](../topics/selectors.html#scrapy.selector.SelectorList "scrapy.selector.SelectorList") 实例找不到任何符合的元素时,直接使用 `.get()` 可避免 `IndexError` 和返回 `None`
这里有一个教训:对于大多数抓取代码,您希望它能够对由于在页面上找不到的东西而导致的错误具有弹性,这样即使某些部分无法抓取,您至少可以 **some** 数据。
课堂小知识:对于大多数的抓取代码,当有找不到东西的时候,您会希望它能处理错误。这样的话即使抓取失败了,您至少可以得到**一些些**数据。
此之外 [`getall()`](../topics/selectors.html#scrapy.selector.SelectorList.getall "scrapy.selector.SelectorList.getall")[`get()`](../topics/selectors.html#scrapy.selector.SelectorList.get "scrapy.selector.SelectorList.get") 方法,也可以使用 [`re()`](../topics/selectors.html#scrapy.selector.SelectorList.re "scrapy.selector.SelectorList.re") 提取方法 [regular expressions](https://docs.python.org/3/library/re.html)
[`getall()`](../topics/selectors.html#scrapy.selector.SelectorList.getall "scrapy.selector.SelectorList.getall")[`get()`](../topics/selectors.html#scrapy.selector.SelectorList.get "scrapy.selector.SelectorList.get") 方法,您也可以以 [`re()`](../topics/selectors.html#scrapy.selector.SelectorList.re "scrapy.selector.SelectorList.re") 方法使用 [正则表达式](https://docs.python.org/zh-cn/3/library/re.html)提取数据
```py
>>> response.css('title::text').re(r'Quotes.*')
......@@ -255,9 +255,9 @@ scrapy shell "http://quotes.toscrape.com/page/1/"
```
为了找到合适的CSS选择器,您可能会发现在Web浏览器的shell中使用 `view(response)` . 您可以使用浏览器开发人员工具检查HTML并找到一个选择器(请参见关于 [使用浏览器的开发人员工具进行抓取](../topics/developer-tools.html#topics-developer-tools)
为了找到合适的CSS选择器,您也许会发现在您的浏览器里的shell使用`view(response)`打开相应页面会很有用 . 您可以使用浏览器内的带有选择器的开发者工具查看HTML(请参见关于 [使用浏览器的开发人员工具进行抓取](../topics/developer-tools.html#topics-developer-tools)
[Selector Gadget](http://selectorgadget.com/) 也是一个很好的工具,可以快速找到视觉上选中的元素的CSS选择器,它可以在许多浏览器中使用
[Selector Gadget](http://selectorgadget.com/) 工具可以快速找出CSS元素,其可支持多种浏览器
#### xpath:简介
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册