Python3爬虫爬取中国图书网(淘书团)进阶版InsistPy

在原版的基础上,添加了进程池,进程锁,以及数据处理分析小实验

首先分析一下在整个程序的哪个进程中,可以实现多进程提高运行效率,首先爬虫程序会先去拿网站的url,然后对url内的json数据进行处理,之后写入文件

所以在整个过程中,我们可以分别让多个进程去拿url拿response的数据,然后分批处理,写入文件中

首先找到我们遍历url的方法中,把方法体进一步封装到scraping_page_data()方法里

并创建线程池:

defdynamtic_scraping_data(page,headers,fileName):pool=multiprocessing.Pool()#进程池lock=multiprocessing.Manager().Lock()#加一个写锁,确保每页的内容在一起'''ifcode'lock=multiprocessing.Lock()'报错:RuntimeError:Lockobjectsshouldonlybesharedbetweenprocessesthroughinheritance'''foriinrange(page):pool.apply_async(scraping_page_data,(lock,i,headers,fileName))pool.close()pool.join()

这里有几个知识点,首先,对于进程池,会根据主机的系统资源,去分配到底有多少条进程

其次如果不调用join方法,子进程会在主进程结束后继续执行,因为后面有数据分析的功能所以我们条用了join方法,让主进程去等待其他的进程

在进程池中调用apply方法去实现每个子进程要执行的方法apply(method_name,(parameters....))

由于我们想要确保,每次拿到一条url,希望当前进程写入的数据的时候,不被其他进程打扰,我们给写入操作加上进程锁

在写的过程中,我发现如果按照创建一条进程的方法也创建进程锁,会报错,原因是用了进程池,而进程池中的进程并不是由当前同一个父进程创建的原因。

查了下资料,multiprocessing.Manager()返回的manager对象控制了一个server进程,可用于多进程之间的安全通信。

写入文件加锁:

defwrite_csv_rows(lock,path,headers,rows):#writeonerowlock.acquire()withopen(path,'a',encoding='gb18030',newline='')asf:f_csv=csv.DictWriter(f,headers)#如果写入数据为字典,则写入一行,否则写入多行iftype(rows)==type({}):f_csv.writerow(rows)else:f_csv.writerows(rows)lock.release()

这样我们会发现进程池会调用多个进程资源,并执行写入操作,互不干扰,但是这样就遗留下来了问题,总结会提到

接下来拿到数据后,我们读取cvs中的price,分析价格低于200¥的图书的价位分布,为了生成统计图,我们引入matplotlib包

首先处理脏数据:

这里提到一点在基础版忽视的问题,我们发现在读入的数据中,有一部分的图书名字会加上‘团购:’的无用信息,所以我们要在存入磁盘前删掉它

fordatainresult['Data']:bookinfo['bookName']=data['book_name'].replace('团购:','')bookinfo['price']=data['group_price']bookinfo['iconLink']=data['group_image']write_csv_rows(lock,fileName,headers,bookinfo)接下来就是处理数据的部分了:先拿到cvs文件中price的值,也就是栏位为1

然后遍历删掉title=>price后,我们发现在price的数据中,有的值为'39.9-159.9'格式,对于这种格式的数据,我们求平均值来计算

最后我们把价格低于200的数据存入数组,用于生成柱状图

#matplotlibviews,统计价格小于200的图书价格分布prices=[]price=read_csv_column(csv_filename,1)foriinrange(len(price)-1):if(price[i+1].find('-')!=-1):splitprice=price[i+1].split('-')average_price=(float(splitprice[0])+float(splitprice[1]))/2if(average_price<200):prices.append(average_price)elif(float(price[i+1])<200):prices.append(float(price[i+1]))plt.hist(prices,bins=10)print(prices)plt.show()调用show()方法后生成统计图

当然matplotlib为我们提供了很多方法去美化,以及生成点状图,线图等等,在这里仅仅是测试功能,自我学习,不多测试了

小实验全部代码:

总结:

在测试爬虫程序的过程中,发现了一个非常关键的问题,也就是网络稳定对爬虫程序的影响。如果读取页数相当庞大,在抓取过程中,

会有某个链接出现相应失败的情况,但是本程序默认的操作是跳过继续执行。所以这样就有可能导致数据丢失,以至于分析数据结果

不准确,google后,发现消息队列是一个很好的解决方法,把每次拿到的url存入队列中,每个进程作为消费者去pop队列中的url,如

果拿数据失败,则从新把url指令存入队列,等待重新执行。有机会试着实现一下

THE END
1.图书批发图书批发网上市场图书馆馆配中国图书网图书批发,为您提供海量特价图书批发、图书馆馆配,图书批发涉及文学、社科、少儿、文教、原版进口书、动漫等多个类别,正版保证,价格公道,中国图书网是全国众多书店及图书馆供货商,欢迎您来选购!http://pifa.bookschina.com/
2.2024年图书出版行业前景分析2024年版中国图书出版行业深度调研及市场前景分析报告,图书出版行业作为文化传播的重要载体,近年来在数字化浪潮的冲击下,经历了从纸质书籍向电子书、有声书、在线阅读平台的多元化转型。数字出版技术的应用,不仅丰富了图书的传播形式,也降低了出版成本,缩短了出版周期https://www.cir.cn/R_QiTaHangYe/85/TuShuChuBanHangYeQianJingFenXi.html
3.2012年“中国图书对外推广计划”外国专家座谈会网上直播2011年中国数字出版产业整体收入规模为1377.88亿元,比2010年整体收入增长了31%,全年共出版电子图书90万种,互联网期刊2.5万种,数字报纸900种,总收入达到28.34亿元。中国科技出版虽然取得了一些成绩,但与发达国家相比,发展水平还不够高,与世界出版强国还有较大的差距。特别是在科技内容的数字化出版方面,还有很长的路要http://www.china.com.cn/zhibo/2012-08/27/content_26326361.htm
4.知网阅读——中国知网中国知网知网阅读-全球领先的数字图书馆 全天开放的大众知识服务!面向海内外读者提供杂志(期刊)、图书、工具书、报纸、会议论文、学位论文全文的在线阅读和下载服务。涵盖基础科学、文史哲、工程科技、社会科学、农业、经济与管理科学、医药卫生、信息科技等十大领域。https://mall.cnki.net/
5.中国国家图书馆(中关村总馆)电话,地址,价格,营业时间(图)为您提供中国国家图书馆(中关村总馆)的人均消费、品牌简介、店铺图片、折扣优惠、用户口碑、娱乐中心会所信息、夜生活指南、KTV茶馆酒吧电玩推荐等信息,中国国家图书馆(中关村总馆)好不好,海淀区文化艺术选择中国国家图书馆(中关村总馆)怎么样?快来看看大家如何点评吧!https://www.dianping.com/shop/1770856
6.全国十大图书批发网站批发图书哪个网站好→MAIGOO生活榜中国十大图书批发网站 1、甲虎网 www.jarhu.com 甲虎网图书批发市场,隶属于北京甲虎文化传播有限公司,具备出版物经营许可证,主营图书批发、零售、团购、图书阅读等。MAIGOO小编了解到,甲虎网成立于2008年,2010年推出图书供应链系统,并在行业内率先提出“一站式图书批发”。截至2021年,甲虎网正版图书品种已达到100万https://www.maigoo.com/top/422323.html
7.北京中国期刊网CNKI数字图书馆游玩攻略携程攻略提供北京中国期刊网CNKI数字图书馆游玩攻略信息,您可以查询北京中国期刊网CNKI数字图书馆票价格优惠信息表、参观预约中国期刊网CNKI数字图书馆门票价格多少钱,中国期刊网CNKI数字图书馆团购门票预定优惠、中国期刊网CNKI数字图书馆景点地址在哪和开放时间、中国期https://gs.ctrip.com/html5/you/sight/beijing1/145194312.html
8.5个买英文原版书的网站推荐【网站简介】:Book Depository是英国著名的在线图书经销商,于2011年7月被亚马逊收购。书迷和本本控们不仅可以从这个网站购买记事本,如Moleskine,还可以购买英文原版图书、下载免费电子书,而且信誉也有保证。无论是文学历史,小说,科学,还是社会类型,都能找到,绝对是爱看原版英文书的书迷们的福音。 https://www.extrabux.cn/chs/guide/3633435
9.教育部:从未以“教育部推荐”等名义出版和推荐图书原标题:教育部:从未以“教育部推荐”等名义出版和推荐图书 教育部网站截图。中国网7月29日讯 据教育部网站28日消息,教育部教材局发布《关于从未以“教育部推荐”“新课标指定https://news.sina.cn/2020-07-29/detail-iivhuipn5658161.d.html
10.甘肃农业职业技术学院14、2019年3月27日,由中国图书馆学会、中国国家图书馆、大英图书馆主办的“2019中英图书馆论坛”在( )开幕。 A.四川省图书馆B.山东省图书馆C.陕西省图书馆D.中国国家图书馆 正确答案:A 单选题 15、参考文献“徐悟. 六边形钢管混凝土柱及其外包式柱脚工作机理研究[D].清华大学,2016.”,可以判断《六边形钢管混https://www.gscat.edu.cn/tsg/content.thtml?contentId=24288
11.中国进口图书旗舰店中国进口图书旗舰店,在线销售中国进口图书旗舰店品牌商品的参数、评论、价格、促销等信息,欢迎来当当网中国进口图书旗舰店选购。http://shop.dangdang.com/9879
12.图书网图书馆中国图书网秉承国家图书馆的分享精神,为图书迷们推荐优秀图书,同时也是全国各大小图书馆的交流平台。http://www.hbhgbook.com/
13.法学图书馆简史法学图书馆,即中国社会科学院法学研究所图书馆,是中国社会科学院中规模较大的图书馆之一,也是国内馆藏法律文献数量较大、内容丰富、门类齐全、并具有一定特色的专业图书馆。 2003年10月3日,既是法学研究所成立45周年的纪念日,同时也是法学所图书馆45周岁的生日。45年来,法学研究所图书馆坚持为法学研究、法制建设、http://www.iolaw.org.cn/global/en/new.aspx?id=5106
14.中国图书网(网上图书销售平台)网上图书销售平台 中国图书网(简称:中图网),是中国最早的网上图书销售平台之一,创办于1998年,隶属于北京英典电子商务有限责任公司。[1][2] 中国图书网以销售多年出版的出版社精选尾货图书为主要特色,同时网站中的书本售价2至5折,且包含老版书、稀缺书。中图网拥有一支专门的采购团队。[2]曾获评“消费者最喜爱https://baike.sogou.com/m/fullLemma?lid=367416&g_ut=3