使用多处理、随机代理和用户代理擦除站点
firstscrap的Python项目详细描述
第一次报废
< Pr> FrestyBub是一个用多处理、随机代理和用户代理来清除站点的库。
安装
要开始使用第一个废品库,请激活(或在必要时创建)您的虚拟环境。例如,如下所示:
python3 -m venv env
source ./env/bin/activate
要安装第一个废料,请使用PIP软件包管理器:
pip install firstscrap
另一种安装方法是从github获取源代码。为此,请执行控制台中的命令:
git clone http://github.com/theodor85/first_scrap
cd first_scrap
python setup.py develop
如何使用
要从单个网页提取数据,请创建一个从PageHandler
抽象类派生的类。
在类中,必须定义一个构造函数,其中必须调用基类构造函数并定义两个实例字段:URL
和use_selenium
:
URL
-要从中提取数据的网页的URLuse_selenium
-这个布尔字段决定是否使用beautifulsoup(如果它设置在False
)或selenium(True
)。
此外,还必须定义方法extract_data_from_html(self, soup=None, selenium_driver=None)
。使用beautifulsoup(soup
)对象或selenium(selenium_driver
)进行数据提取。
下面给出一个例子。
fromfirstscrap.pagehandlerimportPageHandler# class for one web-page handlingclassOnePageHandler(PageHandler):def__init__(self,URL):super(FlatHandler,self).__init__()self.URL=URLself.use_selenium=Falsedefextract_data_from_html(self,soup=None,selenium_driver=None):data={}data['link']=self.URLdata['name']=soup.find('h1',class_='information__title___1nM29').get_text().strip()data['price']=soup.find('div',class_='information__price___2Lpc0').span.get_text().strip()
然后创建该类的实例并调用execute()
方法
handler=FlatHandler('<your URL>')data=handler.execute()
在data
变量中有您提取的数据
要从许多相同网页的列表中提取数据,请使用list_handler
函数:
fromfirstscrap.listhandlerimportlist_handlerresult=list_handler(list_of_links,OnePageHandler,with_processes=True,process_limit=5)
函数采用参数:
list_of_links
-指向将从中提取数据的页的链接列表;OnePageHandler
类的后代,从一个网页中提取数据;with_processes
-布尔参数,如果将使用多处理process_limit
-最大进程数。
发动机罩下有什么
从单个页面提取数据时:
- 随机代理服务器和用户代理是从文件中存储的列表中选择的。 <>这些代理和用户代理被用来访问我们需要的页面。
- 使用beautifulsoup或selenium(取决于use_selenium字段),从页面检索数据并由“execute()”方法返回。
从页面列表提取数据时:
- 如果
with_processes = False
参数,程序将从传递列表中的所有页中逐个检索数据同时,每次使用随机代理服务器和用户代理。 - 否则,程序将在单独的进程中开始处理每个页面,同时运行的进程数不超过
process_limit
。
先决条件
要使用Selenium库,必须在系统上安装Google Chrome浏览器(download here)和ChromeDriver(installation instructions)。
计划支持其他brouser
运行测试
要运行测试,请在控制台中键入:
python -m unittest -v tests/tests.py
在运行测试之前,请确保您的internet连接处于活动状态
贡献
请将您的代码合并到“开发”分支进行贡献。
欢迎使用叉子和拉牌如果你喜欢第一个废品,别忘了放一颗星星!
错误报告
若要报告错误,请使用标记“First_Scrap Bug Reporting”将邮件发送到fedor_coder@mail.ru。
许可证
这个项目是在麻省理工学院的许可下授权的-请参阅LICENSE.txt文件了解详细信息。