response.css('a.next::attr(href)').get()与response.css('a.next::attr(href)').getall()的区别
时间: 2024-06-07 07:11:00 浏览: 151
这两个语句都是使用 CSS 选择器获取页面中所有符合条件的下一页链接的 href 属性值。不同之处在于,response.css('a.next::attr(href)').get() 只会返回找到的第一个链接的 href 属性值,而 response.css('a.next::attr(href)').getall() 会返回所有找到的链接的 href 属性值组成的列表。如果页面中只有一个下一页链接,两者的结果是相同的;如果页面中有多个下一页链接,那么使用 get() 只会获取到第一个链接,而使用 getall() 则会获取到所有链接。
相关问题
用scrapy 采集https://www.whfdcjy.cn:8065/website/app/Esf/index网站前十页的数据
好的,这里是一个示例代码,可以用来爬取 https://www.whfdcjy.cn:8065/website/app/Esf/index 网站前十页的数据:
```python
import scrapy
class WhfdcjySpider(scrapy.Spider):
name = 'whfdcjy'
allowed_domains = ['www.whfdcjy.cn']
start_urls = ['https://www.whfdcjy.cn:8065/website/app/Esf/index']
def parse(self, response):
# 获取当前页的数据
for item in response.css('.list li'):
yield {
'title': item.css('.title a::text').get(),
'price': item.css('.price em::text').get(),
'area': item.css('.area em::text').get(),
'address': item.css('.address::text').get(),
}
# 获取下一页的链接,继续爬取
next_page = response.css('.page a:last-child::attr(href)').get()
if next_page:
yield response.follow(next_page, self.parse)
```
这个代码使用了 Scrapy 框架,首先在 `start_urls` 中指定了要爬取的网站首页,然后在 `parse` 方法中解析了当前页面的数据,并使用 `response.follow()` 方法继续爬取下一页的链接。在每一页的数据爬取完毕后,会自动跳转到下一页并继续爬取,直到爬取了前十页的数据。
请注意,由于目标网站使用了 HTTPS 协议,需要在 `settings.py` 中进行相关配置才能正常爬取。具体的配置方法可以参考 Scrapy 官方文档。
``` import scrapy class QuotesSpider(scrapy.Spider): ```
```python
name = 'quotes' # 给爬虫命名,方便管理和识别
start_urls = ['http://example.com/quotes'] # 初始的抓取URL,这里以示例网站的引言页面为例
def parse(self, response): # 解析函数,处理网页内容
for quote in response.css('div.quote'): # 假设页面有类名为"quote"的元素包含引述
text = quote.css('span.text::text').get() # 提取文字内容
author = quote.css('span.author::text').get() # 提取作者信息
yield {
'quote_text': text,
'author': author,
} # 创建一个字典,存储引述和作者
# 如果还有下一页链接
next_page = response.css('a.next::attr(href)').get()
if next_page is not None:
yield response.follow(next_page, self.parse) # 跟随到下一页并继续解析
# 如果没有更多页面,检查是否有分页导航,如有则递归处理
pagination_links = response.css('.pagination a')
for link in pagination_links[1:]: # 忽略首页链接
yield response.follow(link, self.parse)
```
这段代码定义了一个名为`QuotesSpider`的Scrapy爬虫,用于抓取包含在`<div class="quote">`标签中的引述及其作者信息,并能遍历可能存在的分页链接。通过CSS选择器提取文本和作者,将结果存储为字典并逐个返回。如果找到下一页链接,会跟随链接进行递归抓取。
阅读全文