从你给出的代码看,似乎你在创建爬虫进程池时遇到了问题。根据你的描述,我猜你可能是在使用 Python 的 multiprocessing.Pool
来创建一个进程池,然后使用 map
函数来并行处理一些 URL。
首先,我看到你在 p.map(get_house_info, urls)
之前将数据保存到了一个CSV文件中。这可能是不必要的,除非你在每个URL获取信息之前需要先保存这个CSV文件。
然后,我看到你在 p.map(get_house_info, urls)
之后关闭了进程池。这是正确的,因为在每个进程完成其任务后,它们都应该被关闭。然而,通常我们不需要显式地调用 p.close()
,因为当我们调用 p.map()
时,它会隐式地创建和管理这些进程。在我们完成对进程池的所有操作后,我们应该显式地调用 p.close()
和 p.join()
来关闭这些进程。
最后,你的问题可能在于 get_house_info
函数。这个函数应该是一个可调用对象,它接受一个URL作为参数,并返回一个值。如果 get_house_info
不是这样的函数,那么 p.map(get_house_info, urls)
可能会失败。
以下是一个更正的代码示例:
import multiprocessing
import requests
from bs4 import BeautifulSoup
def get_house_info(url):
# 这里是你的爬虫代码
pass
def start_crawler():
urls = ['https://cc.lianjia.com/ershoufang/pg{}'.format(str(i))for i in range(1,101)]
p = multiprocessing.Pool(processes=4)
p.map(get_house_info, urls)
p.close()
p.join()
注意:get_house_info
函数是空的,你需要在这里填充你的爬虫代码。此外,我假设你的爬虫代码可以正常工作,并且当给定一个URL时,它会返回一个值。如果不是这样,你需要修复你的爬虫代码。