RT,鄙人在网上直接扒下来无界面浏览器的样例,需要爬一个带 dom 型内容的网页:
#coding=utf-8 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys chrome_optiOns= webdriver.ChromeOptions() # 使用 headless 无界面浏览器模式 chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') # 启动浏览器,获取网页源代码 browser = webdriver.Chrome(chrome_optiOns=chrome_options) mainUrl = "https://xxx.com" browser.get(mainUrl) #print(f"browser text = {browser.page_source}") print browser.page_source browser.quit()
按理说应该问题不大,原案例网址是可以爬出东西的。 结果我填入我需要爬的网页,除了一些必要的该网页的 title 和 meta 信息,剩下的就是下面这样:
<noscript> <div class="js-disabled"> It looks like your Javascript is disabled. To use XXX, enable Javascript in your browser and refresh this page. </div> </noscript>
敢问各位大佬,这是网站自己做了防爬措施,还是我需要启用其他的 option ? 最关键是,我试着自己通过 chrome_options.add_argument,又加了些 headless chrome 的 option,参考资料如下:
http://www.assertselenium.com/java/list-of-chrome-driver-command-line-arguments/
但结果并没有什么卵用,还是会出现 noscript 的提示,求解惑应该怎样解决这个问题。
另外,样站是客户要去测的,这里不太方便直接发出网址,望各位大佬见谅!
1 akmonde OP 有大佬能帮小弟解答一二么...我看了几条消息全都是收藏... |
![]() | 2 hareandlion 2018-04-09 08:55:31 +08:00 via iPhone selenium 用得不多,基本都是爬静态资源,请问什么情况下需要用到网页的 js ?谢谢 |
![]() | 3 gimp 2018-04-09 09:04:20 +08:00 默认应该是可以解析 js 的,进一步确定问题所在可以尝试以下 1,换用 Firefox 跑一下看看能不能解析,如果可以,说明问题还在 chrome headless 设置问题 2,找个 JS 动态渲染的网页,比如 http://data.eastmoney.com/report/ 看看能不能渲染 |
![]() | 4 zbl430 2018-04-09 11:47:24 +08:00 不发网址。。。不好搞啊 |
6 akmonde OP @gimp eastmoney 的站可以渲染的,chrome 和 firefox 都是那个 disable 的提示,很绝望.. |
7 akmonde OP @hareandlion dom 形成的网页资源,直接 requests,urllib*返回的内容里读不到的,需要模拟浏览器。 |
![]() | 8 wwek 2018-06-17 22:26:56 +08:00 界面浏览器访问看有哪些 ajax 请求 然后无界面的再来一遍,抓包对比 |