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 请求
然后无界面的再来一遍,抓包对比 |