【多进程并行版本】爬取链家二手房前100页标签,进行统计 灰太狼 2022-05-26 00:27 131阅读 0赞 ## 前言 ## python在进程间通信会比较麻烦~ 要注意,这里我们想到的时候多个进程一起维护一个字典。 所以,我加了锁。这里还是存在一个可能的改进方法,就是考察你的锁加在哪个位置来判断。 [旧的单进程版本][Link 1] ## 代码一: ## 用时: 10.798075914382935秒 看了三千个网页的样子。还算不错的啦。但是还是想要跟好的优化~ import requests from bs4 import BeautifulSoup import re from multiprocessing import Manager, Lock, Process def getUrl(url='https://gz.lianjia.com/ershoufang/pg{}/'): for i in range(100): yield url.format(i + 1) def findAInUrl(url, lock, tag): res = requests.get(url) soup = BeautifulSoup(res.text, 'lxml') lis = soup.find_all('li', attrs={ 'class': "clear"}) for li in lis: info = li.find('div', attrs={ 'class': 'info clear'}) tags = info.find('div', attrs={ 'class': 'tag'}) for t in tags: ans = re.findall('(?<=\>).+(?=\<)', str(t)) if '距离' in ans[0]: ans[0] = '地铁' lock.acquire() if ans[0] not in tag: tag[ans[0]] = 1 else: tag[ans[0]] += 1 lock.release() if __name__ == '__main__': tag = Manager().dict() pList = [] lock = Lock() for url in getUrl(): p = Process(target=findAInUrl, args=(url, lock, tag)) pList.append(p) p.start() for p in pList: p.join() print(tag) ## 代码二 ## 用时:11.187129020690918秒 import requests from bs4 import BeautifulSoup import re from multiprocessing import Manager, Lock, Process import time def getUrl(url='https://gz.lianjia.com/ershoufang/pg{}/'): for i in range(100): yield url.format(i + 1) def findAInUrl(url, lock, tag): res = requests.get(url) soup = BeautifulSoup(res.text, 'lxml') lis = soup.find_all('li', attrs={ 'class': "clear"}) for li in lis: info = li.find('div', attrs={ 'class': 'info clear'}) tags = info.find('div', attrs={ 'class': 'tag'}) lock.acquire() for t in tags: ans = re.findall('(?<=\>).+(?=\<)', str(t)) if '距离' in ans[0]: ans[0] = '地铁' if ans[0] not in tag: tag[ans[0]] = 1 else: tag[ans[0]] += 1 lock.release() if __name__ == '__main__': st = time.time() tag = Manager().dict() pList = [] lock = Lock() for url in getUrl(): p = Process(target=findAInUrl, args=(url, lock, tag)) pList.append(p) p.start() for p in pList: p.join() print(tag) et = time.time() print(et- st) ## 代码三 ## 用时:11.184273481369019秒 import requests from bs4 import BeautifulSoup import re from multiprocessing import Manager, Lock, Process import time def getUrl(url='https://gz.lianjia.com/ershoufang/pg{}/'): for i in range(100): yield url.format(i + 1) def findAInUrl(url, lock, tag): res = requests.get(url) soup = BeautifulSoup(res.text, 'lxml') lis = soup.find_all('li', attrs={ 'class': "clear"}) lock.acquire() for li in lis: info = li.find('div', attrs={ 'class': 'info clear'}) tags = info.find('div', attrs={ 'class': 'tag'}) for t in tags: ans = re.findall('(?<=\>).+(?=\<)', str(t)) if '距离' in ans[0]: ans[0] = '地铁' if ans[0] not in tag: tag[ans[0]] = 1 else: tag[ans[0]] += 1 lock.release() if __name__ == '__main__': st = time.time() tag = Manager().dict() pList = [] lock = Lock() for url in getUrl(): p = Process(target=findAInUrl, args=(url, lock, tag)) pList.append(p) p.start() for p in pList: p.join() print(tag) et = time.time() print(et- st) -------------------- ## 前三个版本的代码区别在于锁的位置的不同,导致了时间的不一样。 ## [Link 1]: https://blog.csdn.net/a19990412/article/details/79810847
相关 python爬虫之静态网页爬取--猫眼电影/链家二手房 猫眼电影(xpath) 目标 1、地址: 猫眼电影 - 榜单 - top100榜 2、目标: 电影名称、主演、上映时间 步骤 本是古典 何须时尚/ 2023年06月22日 08:25/ 0 赞/ 74 阅读
相关 爬取链家任意城市二手房数据(天津) 1 !/usr/bin/env python 2 -- coding: utf-8 -- 3 @Time : 2019-08-16 1 桃扇骨/ 2023年06月03日 04:00/ 0 赞/ 63 阅读
相关 Python爬虫新手入门教学(三):爬取链家二手房数据 前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 Python爬虫、数据分析、网站开发等案例教程视频免费在线观 港控/mmm°/ 2023年01月11日 03:44/ 0 赞/ 246 阅读
相关 Python爬虫之链家二手房数据爬取 Python 依赖模块: requests parsel csv 功能要求: ![watermark_type_ZHJvaWRzYW5zZmFs 本是古典 何须时尚/ 2022年09月11日 07:23/ 0 赞/ 405 阅读
相关 【多进程并行版本】爬取链家二手房前100页标签,进行统计 前言 python在进程间通信会比较麻烦~ 要注意,这里我们想到的时候多个进程一起维护一个字典。 所以,我加了锁。这里还是存在一个可能的改进方法,就是考察你的锁加 灰太狼/ 2022年05月26日 00:27/ 0 赞/ 132 阅读
相关 python爬取链家新房数据 转载:https://blog.csdn.net/clyjjczwdd/article/details/79466032 from bs4 impor 清疚/ 2022年05月09日 02:38/ 0 赞/ 279 阅读
相关 爬取链家网所有二手房楼盘信息 代码如下: import requests from lxml import etree import math import time 缺乏、安全感/ 2022年02月04日 17:13/ 0 赞/ 455 阅读
相关 50 行代码爬取链家租房信息 最近自己开始学习数据分析的技术,但数据分析最重要的就是数据。没有数据怎么办?那就自己爬一些数据。大家一定要记得爬虫只是获取数据的一种手段,但如果不用一系列科学的方式去分析这些数 淡淡的烟草味﹌/ 2022年02月02日 03:25/ 0 赞/ 359 阅读
相关 多进程爬取 import requests from lxml import etree import re import time from mu 柔情只为你懂/ 2022年01月12日 15:59/ 0 赞/ 321 阅读
还没有评论,来说两句吧...