React 前端导航

Python 利用 DrissionPage 绕过网站空白校验 windows和linux 使用部署说明

首先说明为什么使用这个 不使用selenium 来模拟浏览器爬取网站数据,举例https://qikan.cqvip.com 这个网站正常使用 selenium打开是空白的页面,爬取不到任何东西,而DrissionPage 则在原有的selenium基础上升级了防爬规则,在用户浏览器请求头里面更好的模拟真实用户,来绕过校验。

1.安装

pip3 install DrissionPage

2.引入主程序

from DrissionPage import ChromiumPage

3.设置调用浏览器地址 只需要执行一次生成配置文件即可

from DrissionPage.easy_set import set_paths
#表示调用浏览器的地址是多少
Windows 地址示例
#windows的直接找chrome.exe文件
set_paths(browser_path=r'C:/Users/AAA/AppData/Local/Google/Chrome/Application/chrome.exe')
Linux 地址示例
#一般linux安装的google浏览器默认都在这个目录
set_paths(browser_path=r'/opt/google/chrome/google-chrome')

4.设置不显示浏览器调用访问,只需要在linux环境上打开注释即可

from DrissionPage.easy_set import set_headless, set_pathsset_headless(True)

5.ini配置说明

默认windows是不需要管的,只需要linux的时候设置一下注意端口不要冲突和chromedriver地址即可
服务器linux地址为
/usr/local/python3/lib/python3.7/site-packages/DrissionPage/configs

  • 1表示chrome对应版本的 chromedriver地址
  • 2表示debug模式启动的端口,注意如果部署了selenium 端口不要冲突了 默认是9222 修改成9211或者其他都可以
  • 3表示chrome对应的安装地址,一般不需要动

[paths]chromedriver_path=/mkl/weipu/chromedriver-linux64/chromedriverdownload_path = [chrome_options]debugger_address = 127.0.0.1:9211binary_location = /opt/google/chrome/google-chromearguments = ['--no-first-run', '--no-sandbox', '--disable-infobars', '--disable-popup-blocking', '--headless=new']extensions = []experimental_options = {'prefs': {'profile.default_content_settings.popups': 0, 'profile.default_content_setting_values': {'notifications': 2}}}page_load_strategy = normaluser = Defaultauto_port = Falsesystem_user_path = False[session_options]headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8', 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'connection': 'keep-alive', 'accept-charset': 'GB2312,utf-8;q=0.7,*;q=0.7'}[timeouts]implicit = 10page_load = 30script = 30[proxies]http =https =

6.代码示例说明

import timeimport reimport math# import pymysqlfrom DrissionPage import ChromiumPagefrom DrissionPage.easy_set import set_pathsfrom DrissionPage import ChromiumOptionsfrom DrissionPage.easy_set import set_headless, set_pathsset_headless(True)co = ChromiumOptions()co.set_argument('--incognito')co.set_argument('--no-sandbox');#set_paths(browser_path=r'/opt/google/chrome/google-chrome')#set_paths(browser_path=r'C:/Users/AAA/AppData/Local/Google/Chrome/Application/chrome.exe')
def start_wp_spider(auth_name,institution_name,status_type): #爬取万方信息 # 用 d 模式创建页面对象(默认模式) page = ChromiumPage() # 跳转到登录页面 page.get('https://xxx.com/') time.sleep(1) #选择点击事件 可以使用 xpath: 后面的是xpath路径 page.ele('xpath://*[@id="basic_searchdomainfilter"]/div[1]/div[1]/div[1]/div/div/input').click() #这里为input的输入的内容 根据xpath page.ele('xpath://*[@id="basic_searchdomainfilter"]/div[1]/div[1]/div[2]/input').input('输入的内容') #根据xpath 获取对应的值内容 page.ele('xpath://*[@id="body"]/div/div/div[1]/div[1]/em').text #这里通过 organ的 class 获取到这个class里面所有a标签里面的文字 wp = page.ele('.organ') Wp_a_text = wp.ele('tag:a').text #这里获取到class为subject的所有a标签并循环获取每个a标签的text文本内容 auth_remark_subject_wp = page.ele('.subject') subject_wp_List = auth_remark_subject_wp.eles('tag:a') for subject_list_name in subject_wp_List: subject_wp = subject_wp+subject_list_name.text+";" #这里获取到id为CitationRelate的所有li 标签并循环获取每个li标签的text文本内容 table_list_wp = page.ele('#CitationRelate') table_list_List = table_list_wp.eles('tag:li') for lists in table_list_List: print(lists.text) #根据获取到的class 进行点击 table_list_wp_pages.ele('.layui-laypage-next').click() #关闭浏览器 page.close_tabs()

 

声明:本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。邮箱:farmerlzj@163.com。 本站原创内容未经允许不得转载,或转载时需注明出处: 内容转载自: React前端网:https://qianduan.shop/blogs/detail/199
想做或者在做副业的朋友欢迎加微信交流:farmerlzj,公众号:生财空间站。

#python#DrissionPage#爬虫

相关推荐

node 爬虫开源项目

常用的node爬虫开源项目介绍

Python装饰器:从入门到实践

Python装饰器是一种非常强大的工具,可以帮助我们在不改变代码逻辑的情况下,对代码进行扩展和修改。在本文中,我们将探讨装饰器的基本概念,以及如何使用它们来解决常见的问题。