在使用爬虫爬取某查查的数据的时候,会被识别到,进行反爬限制,最后使用selenium模拟浏览器进行爬取。
这里解决办法主要使用selenium打开浏览器,模拟人 *** 作进行爬取,代码:
ua = 'Mozilla/5.0 (windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'#这里是用来隐藏d出框的,如果没有这个,某查查会d出提示框,会影响下一步 *** 作option = webdriver.ChromeOptions()prefs = { 'profile.default_content_setting_values': { 'notifications': 2 } }option.add_experimental_option('prefs', prefs)option.add_argument('--disable-gpu')# 使用浏览器开发者模式,配置实验性功能参数option.add_experimental_option('useautomationExtension', False)option.add_experimental_option('excludeSwitches', ['enable-automation'])#这里使用无头浏览器,如果要观察整个 *** 作流程,可以将此代码注释掉option.add_argument('--headless')option.add_argument('--no-sandBox')option.add_argument('--disable-dev-shm-usage')option.add_argument('user-agent=' + ua)driver = webdriver.Chrome(executable_path="C:\Program files\Google\Chrome\Application\Chromedriver", Chrome_options=option)# 修改谷歌开发者工具中的新属性window.navigator.webdriver# 在加载网页Js之前,将window.navigator.webdriver属性隐藏driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewdocument", { "source": """ Object.defineProperty(navigator, 'webdriver', { get: () => undefined }) """ })driver.get('https://www.qcc.com/')#休眠3秒time.sleep(3)#找到输入框的ID,这里通过ID定位webelement = driver.find_element_by_ID("searchkey")driver.implicitly_wait(2)# 输入文本,注意,如果搜索中文的,需要在前面加u,代表Unicode编码webelement.send_keys(u'企查查')time.sleep(2)#输入完成后,找到查找按钮,然后点击查找按钮webelement = driver.find_element_by_xpath('//*[@ID="indexSearchForm"]/div[1]/span/input')webelement.click()time.sleep(2)print driver.page_source
整个流程就如代码所示,我这里查询的时候不需要登录就能查到需要的数据,如果是需要登录的,也是类似的原理,无法就是多走一步,先登录,然后再进行查询。这里遇到的最主要的三个问题以及解决办法如下:
1、打开网页后,有d框影响下一步 *** 作
解决办法:如代码中所示,影藏d框
2、根本无法打开查询页面
解决办法:一般是window.navigator.webdriver属性问题,我这里就是这个问题,可以先手动打开页面,查询window.navigator.webdriver属性是什么,F12打开Console,输入window.navigator.webdriver即可,这里是undefined,但是如果我们用浏览器打开,window.navigator.webdriver属性会显示是true,因此代码中将此属性隐藏。
3、一切完毕后,发现根本没法在输入框输入查询
解决办法:无意间发现的,基本都是搜索中文公司,无意间发现搜索英文名的公司就能打开,因此判断是需要使用Unicode编码进行搜索,因此在代码中字符串前面加个u,也可以使用三方转码工具进行转码 *** 作。
总结以上是内存溢出为你收集整理的Python使用selenium模拟浏览器爬取某查查数据全部内容,希望文章能够帮你解决Python使用selenium模拟浏览器爬取某查查数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)