[爬虫]请教各位高手,除了 Seleium 的方法,还有什么现成轮子方法可以获得渲染后的网页代码?

2019-07-25 00:35:06 +08:00
 qazwsxkevin

在学习和使用的过程中,我是使用 Seleium+chromedriver 去 driver.page_source 获得渲染后的 html 代码,不知道为什么,用 chromedriver 去 get 网页,webdriver 通常一个页面需要 1~2 分钟才能结束进程得到 html 代码,一两个页面没什么问题,现在批量,就很花时间(这个现象好像也不少人跟我一样的情况,我换电脑,换 chromedriver 版本,甚至换个城市换个运营商都是这样,笑~)
回到问题本身,我其实就是需要找其它什么轮子,可以去获取一个渲染后的页面 html ?(渲染就是鼠标把网页从顶部滚到底部,js 执行完了,网页就渲染好了,不需要其它什么操作)

#使用 Chrome 获取网页代码成 Str
def GetChromeLinkSourcetoStr(link):
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    options.add_argument('--disable-gpu')
    options.add_argument('--no-sandbox')
    options.add_argument('blink-settings=imagesEnabled=false')
    driver = webdriver.Chrome(options=options)
    wait = WebDriverWait(driver, 10)
    driver.maximize_window()
    driver.get(link)
    tmpStr = driver.page_source
    return tmpStr
5414 次点击
所在节点    Python
29 条回复
Threeinchtime
2019-07-25 15:42:48 +08:00
个人用 splash,感觉不好用,看了楼上现在马上去试试 pyppeteer
pmispig
2019-07-25 17:55:30 +08:00
@momocraft pyppeteer 无法在 headless 下载文件,请问怎么解决。。
wersonliu9527
2019-07-25 20:16:17 +08:00
不是很多加载都是 xhr 请求来的么 0.0
greatbody
2019-07-25 22:25:52 +08:00
https://github.com/getgauge/taiko
这个是 ThoughtWorks 出的一款 nodejs 的测试工具,本质上是无头浏览器。
供参考。
alienlu19870911
2019-07-25 23:11:57 +08:00
请教一下大家,pyppeteer 怎么在多线程下调用,想用这个替代 selenium,但在多线程下调用总是会报错,错误是需要运行在主线程。
shuang
2019-07-26 08:57:56 +08:00
Puppeteer+1
有个需求要对网页的某个区域生成缩略图就是用 Puppeteer 实现的,时间大概在 700ms 至 3000ms 之间
不知道是不是服务器性能差异的问题,感觉 windows 比 linux 速度要快一些
KuroNekoFan
2019-07-26 11:23:58 +08:00
headless browser 都行吧,甚至 jsdom 都行
wongyusing
2019-07-26 13:57:00 +08:00
为什么不分析网页的构造形式呢??
鼠标下拉也只是在请求不同也页面。
一般下拉也就是两种情况,
请求 json 数据,通过在 css 或 js 的模板进行渲染。
请求一小段 html 格式,通过元素选择器添加到网页中。

Seleium 这样的轮子讲真,真的很慢。
不过用来实现登陆生成 cookie 池还是比较好的
bantianys
2019-08-24 21:38:39 +08:00
之前也遇到这样的问题。无头模式时快时慢,好像是和 wait 的里面的一个参数有关系,似乎是轮询元素是否存在的频率?既不大清楚了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/585954

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX