File tree 3 files changed +41
-1
lines changed
3 files changed +41
-1
lines changed Original file line number Diff line number Diff line change 86
86
- find / find_all:字符串、正则表达式、列表、True、函数或Lambda。
87
87
- select_one / select:CSS选择器
88
88
89
- > 说明:更多内容可以参考BeautifulSoup的[ 官方文档] ( ) 。
89
+ > 说明:更多内容可以参考BeautifulSoup的[ 官方文档] ( https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html ) 。
90
90
91
91
### 实例 - 获取知乎发现上的问题链接
92
92
Original file line number Diff line number Diff line change 138
138
return item
139
139
140
140
```
141
+ > 说明:上面我们通过Scrapy提供的爬虫模板创建了Spider,其中的rules中的LinkExtractor对象会自动完成对新的链接的解析,该对象中有一个名为extract_link的回调方法。Scrapy支持用XPath语法和CSS选择器进行数据解析,对应的方法分别是xpath和css,上面我们使用了XPath语法对页面进行解析,如果不熟悉XPath语法可以看看后面的补充说明。
142
+
143
+ 到这里,我们已经可以通过下面的命令让爬虫运转起来。
144
+
145
+ ``` Shell
146
+
147
+ (venv)$ scrapy crawl movie
148
+ ```
149
+
150
+ 可以在控制台看到爬取到的数据,如果想将这些数据保存到文件中,可以通过` -o ` 参数来指定文件名,Scrapy支持我们将爬取到的数据导出成JSON、CSV、XML、pickle、marshal等格式。
151
+
152
+ ``` Shell
153
+
154
+ (venv)$ scrapy crawl moive -o result.json
155
+ ```
141
156
142
157
3 . 在pipelines.py中完成对数据进行持久化的操作。
143
158
187
202
return item
188
203
189
204
```
205
+ 利用Pipeline我们可以完成以下操作:
206
+
207
+ - 清理HTML数据,验证爬取的数据。
208
+ - 丢弃重复的不必要的内容。
209
+ - 将爬取的结果进行持久化操作。
190
210
191
211
4 . 修改settings.py文件对项目进行配置。
192
212
Original file line number Diff line number Diff line change 1
1
## Scrapy爬虫框架高级应用
2
2
3
+ ### Spider的用法
4
+
5
+ 在Scrapy框架中,我们自定义的蜘蛛都继承自scrapy.spiders.Spider,这个类有一系列的属性和方法,具体如下所示:
6
+
7
+ 1 . name:爬虫的名字。
8
+ 2 . allowed_domains:允许爬取的域名,不在此范围的链接不会被跟进爬取。
9
+ 3 . start_urls:起始URL列表,当我们没有重写start_requests()方法时,就会从这个列表开始爬取。
10
+ 4 . custom_settings:用来存放蜘蛛专属配置的字典,这里的设置会覆盖全局的设置。
11
+ 5 . crawler:由from_crawler()方法设置的和蜘蛛对应的Crawler对象,Crawler对象包含了很多项目组件,利用它我们可以获取项目的配置信息,如调用crawler.settings.get()方法。
12
+ 6 . settings:用来获取爬虫全局设置的变量。
13
+ 7 . start_requests():此方法用于生成初始请求,它返回一个可迭代对象。该方法默认是使用GET请求访问起始URL,如果起始URL需要使用POST请求来访问就必须重写这个方法。
14
+ 8 . parse():当Response没有指定回调函数时,该方法就会被调用,它负责处理Response对象并返回结果,从中提取出需要的数据和后续的请求,该方法需要返回类型为Request或Item的可迭代对象(生成器当前也包含在其中,因此根据实际需要可以用return或yield来产生返回值)。
15
+ 9 . closed():当蜘蛛关闭时,该方法会被调用,通常用来做一些释放资源的善后操作。
16
+
3
17
### 中间件的应用
4
18
19
+ #### 下载中间件
20
+
21
+
22
+
23
+ #### 蜘蛛中间件
24
+
5
25
6
26
7
27
### Scrapy对接Selenium
You can’t perform that action at this time.
0 commit comments