python 爬虫运行多进程报错:TypeError: cannot pickle '_thread.lock' object
# coding=utf-8""" @project: 15python_spider @Author:frank @file: 01_xiaomi_app.py @date:2024/3/7 19:52"""import jsonimport timefrom multiprocessing import Processfrom queue import Queueimport requestsclass XiaomiSpider(object): def __init__(self): self.url = 'http://app.mi.com/categotyAllListApi?page={}&categoryId=2&pageSize=30' self.headers = {'User-Agent': 'Mozilla/5.0'} # url队列 self.url_queue = Queue() self.n = 0 self.app_list = [] # URL入队列 def url_in(self): for i in range(6): url = self.url.format(i) # 入队列 self.url_queue.put(url) # 线程事件函数 def get_data(self): while True: # self.url_queue.empty() 为空,则退出执行 if self.url_queue.empty(): break # get地址,请求+解析+保存 url = self.url_queue.get() html = requests.get( url=url, headers=self.headers ).content.decode('utf-8') html = json.loads(html) # 解析数据 for app in html['data']: # 应用名称 app_name = app['displayName'] app_link = 'https://app.mi.com/details?id={}'.format(app['packageName']) app_info = { 'app_name': app_name, 'app_link': app_link } self.app_list.append(app_info) self.n += 1 print(url) # 主函数 def main(self): # url 入队列 self.url_in() t_list = [] for i in range(5): t = Process(target=self.get_data) t_list.append(t) t.start() for i in t_list: i.join() with open('app_list.json', 'w') as f: json.dump(self.app_list, f, ensure_ascii=False) print('应用数量:', self.n)if __name__ == "__main__": start = time.time() spider = XiaomiSpider() spider.main() end = time.time() print('执行时间:%.2f' % (end - start))
怎么解决python 爬虫运行多进程报错:TypeError: cannot pickle '_thread.lock' object
你需要 from multiprocessing import Queue
我要把downstream_port传到tiktok_response_interceptor.py脚本, 我目前的方法是 tiktok_response_interceptor-9092.py tiktok_response_interceptor-9093.py tiktok_response_interceptor-9094.py 然后文件中也写死 这大概不是最好的方法
本文向大家介绍python3爬虫中多线程进行解锁操作实例,包括了python3爬虫中多线程进行解锁操作实例的使用技巧和注意事项,需要的朋友参考一下 生活中我们为了保障房间里物品的安全,所以给门进行上锁,在我们需要进入房间的时候又会重新打开。同样的之间我们讲过多线程中的lock,作用是为了不让多个线程运行是出错所以进行锁住的指令。但是鉴于我们实际运用中,因为线程和指令不会只有一个,如果全部都进行lo
原始content: decode('utf-8')报错: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe8 in position 1: invalid continuation byte decode('utf-8', 'ignore'): decode('gbk', 'ignore'): decode('utf-16', 'ig
主要内容:多线程使用流程,Queue队列模型,多线程爬虫案例网络爬虫程序是一种 IO 密集型程序,程序中涉及了很多网络 IO 以及本地磁盘 IO 操作,这些都会消耗大量的时间,从而降低程序的执行效率,而 Python 提供的多线程能够在一定程度上提升 IO 密集型程序的执行效率。 如果想学习 Python 多进程、多线程以及 Python GIL 全局解释器锁的相关知识,可参考《Python并发编程教程》。 多线程使用流程 Python 提供了两个支持多线
本文向大家介绍Python反爬虫伪装浏览器进行爬虫,包括了Python反爬虫伪装浏览器进行爬虫的使用技巧和注意事项,需要的朋友参考一下 对于爬虫中部分网站设置了请求次数过多后会封杀ip,现在模拟浏览器进行爬虫,也就是说让服务器认识到访问他的是真正的浏览器而不是机器操作 简单的直接添加请求头,将浏览器的信息在请求数据时传入: 打开浏览器--打开开发者模式--请求任意网站 如下图:找到请求的的名字,打
python中执行spark算子总是报错,新手上路,请教各路大神,怎么解决? 24/06/17 16:31:58 ERROR Executor: Exception in task 0.0 in stage 0.0 (TID 0) java.net.SocketException: Connection reset 24/06/17 16:31:58 WARN TaskSetManager: Lo