爬虫中的get()和getall()方法的区别

get和getall方法都具有将xpath提取到的数据从selector转换为unicode的作用,只不过get()返回字符串,getall()返回的是一个列表,本人之所以在此点出问题是因为,使用了
chanpinguige = response.xpath("//div[@class=‘properties’]").getall()
然后去遍历,遍历之后xpth的提取方法又用了一次此方法,所以一个为空列表,一个为none,
正确的方法应该为
chanpinguige = response.xpath("//div[@class=‘properties’]"),下面的小标签再逐一用get或者getall获取,就不会报错了,
如response.xpath(".//ul/li/text()").get()就可以了

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
爬虫,多线程和队列是非常常见的技术应用。下面是它们在爬虫的应用示例: 1. 多线程:使用多线可以提高爬取数据的效率,同时可以并发处理多个请求。例如,可以将爬虫程序分为多个线程,每个线程负责处理一个请求,这样可以同时发送多个请求并同时处理响应。 2. 队列:使用队列可以实现任务的调度和管理。例如,可以将待爬取的URL放入队列,然后创建多个爬虫线程从队列获取URL,并进行相应的爬取操作。这样可以有效地控制任务的执行顺序,避免资源竞争和重复爬取。 综合应用示例: ```python import threading import queue import requests # 创建队列 url_queue = queue.Queue() # 定义爬虫函数 def crawler(): while not url_queue.empty(): url = url_queue.get() # 发送请求并处理响应 response = requests.get(url) # 其他处理操作... # 添加待爬取的URL到队列 url_queue.put('http://example.com/page1') url_queue.put('http://example.com/page2') url_queue.put('http://example.com/page3') # 创建多个爬虫线程 num_threads = 3 threads = [] for _ in range(num_threads): t = threading.Thread(target=crawler) threads.append(t) # 启动线程 for t in threads: t.start() # 等待所有线程执行完毕 for t in threads: t.join() # 所有任务完成 print("All tasks finished.") ``` 这个示例展示了如何使用多线程和队列来进行爬虫任务的并发处理和调度。通过将待爬取的URL放入队列,然后创建多个爬虫线程从队列获取URL并进行相应的爬取操作,可以实现高效的爬取任务处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值