Webscraping并不是并行发生的,使用python multiprocessing
图书馆
import requests
from bs4 import BeautifulSoup
import xlwt
from xlwt import Workbook
def webscrape(URL):
#do some scraping
return XYZ
def func(start_id, end_id, sheet, wb):
URL = 'https://www.thisisaURL?page_id='
excel_row = 1
for i in range(start_id, end_id):
xyz = webscrape(URL+str(i))
sheet.write(excel_row, 0, xyz)
excel_row += 1
wb.save(str(start_id) + '.xls')
def init_sheet(sheet):
sheet.write(0,0,'WebscrapingValue')
def main():
wb1 = Workbook()
wb2 = Workbook()
wb3 = Workbook()
wb4 = Workbook()
wb5 = Workbook()
wb6 = Workbook()
init_sheet(sheet1)
init_sheet(sheet2)
init_sheet(sheet3)
init_sheet(sheet4)
init_sheet(sheet5)
init_sheet(sheet6)
p1 = Process(target=func,args=(start_id[0], end_id[0], sheet1,wb1))
p1.start()
p2 = Process(target=func,args=(start_id[1], end_id[1], sheet2,wb2))
p2.start()
p3 = Process(target=func,args=(start_id[2], end_id[2], sheet3,wb3))
p3.start()
p4 = Process(target=func,args=(start_id[3], end_id[3], sheet4,wb4))
p4.start()
p5 = Process(target=func,args=(start_id[4], end_id[4], sheet5,wb5))
p5.start()
p6 = Process(target=func,args=(start_id[5], end_id[5], sheet6,wb6))
p6.start()
p1.join()
p2.join()
p3.join()
p4.join()
p5.join()
p6.join()
希望这个框架能把一些事情说清楚。
是为了让这些excel文件并行生成,并填入
只有第一个文件被创建,其他的文件都没有被创建或保存(它看起来像是在并行执行,但它被卡住了
我研究了Stack和许多帖子,这似乎是我的 requests
库。我认为请求失败了,这在我按CTRL+C键结束程序时有点明显。在 requests
的工作 websracpe(URL)
函数,实际上,我正在为一个网页上的30多个不同的值做这件事。
我试着运行一个类似的代码,但没有 requests
看看excel文件是否是并行生成的,是的!是不是有什么异常处理的请求我不明白?是否有一些我不理解的请求的异常处理方法?
很抱歉,我的代码太神秘了,它很长,我很乐意回答任何关于这方面的问题。