使用多处理、随机代理和用户代理擦除站点

firstscrap的Python项目详细描述


第一次报废


EnglishРусский


< 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抽象类派生的类。

在类中,必须定义一个构造函数,其中必须调用基类构造函数并定义两个实例字段:URLuse_selenium

  • URL-要从中提取数据的网页的URL
  • use_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-最大进程数。

发动机罩下有什么

从单个页面提取数据时:

  1. 随机代理服务器和用户代理是从文件中存储的列表中选择的。
  2. <>这些代理和用户代理被用来访问我们需要的页面。
  3. 使用beautifulsoup或selenium(取决于use_selenium字段),从页面检索数据并由“execute()”方法返回。

从页面列表提取数据时:

  1. 如果with_processes = False参数,程序将从传递列表中的所有页中逐个检索数据同时,每次使用随机代理服务器和用户代理。
  2. 否则,程序将在单独的进程中开始处理每个页面,同时运行的进程数不超过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文件了解详细信息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
丢失线程时发生java异常   递归获取运行Java递归方法的最终else语句   没有正则表达式的Java字符串解析   带连接表的java JPA CriteriaBuilder   java如何在opengl中绘制许多小位图   java如何连接Genymotion和Appium?需要通过Genymotion emulator中的appium而不是安卓 avd打开安卓应用程序   java算法:整数太大   java排序“索引”数组   java将一个Linkedlist中的所有元素追加到另一个列表的末尾   读取pem格式的公钥时发生java错误   带有非OSGi应用程序的java Eclipse本机启动器   java Alljoyn交叉编译:Scons返回不存在的变量“Alljoyn_jar”   java自定义ID生成器并保存到文件   如何在java中解码Unicode编码?