biw*_*biw 32 python web-scraping python-requests
我正在尝试使用python的请求框架(http://docs.python-requests.org/en/latest/),但我试图访问的页面使用javascript来获取我想要的信息.
我试图在网上搜索一个解决方案,但事实上我正在搜索关键字javascript,我得到的大部分内容是如何使用javascript语言.
无论如何使用请求框架与使用javascript的页面?
sbe*_*rry 28
您将不得不使用javascript创建相同的请求(使用Requests库).您可以使用任意数量的工具(包括Chrome和Firefox中内置的工具)来检查来自javascript的http请求,并自行从Python发出此请求.
Lil*_*aco 20
虽然Selenium可能看起来很诱人且有用,但它有一个无法解决的主要问题:性能.通过计算浏览器所做的每件事,您将需要更多的功能.甚至PhantomJS也不会与简单的请求竞争.我建议您在真正需要单击按钮时才使用Selenium.如果你只需要javascript,我推荐PyQt(请查看https://www.youtube.com/watch?v=FSH77vnOGqU来学习它).
但是,如果您想使用Selenium,我建议使用Chrome over PhantomJS.很多用户都遇到PhantomJS的问题,其中一个网站根本无法在Phantom中运行.Chrome也可以是无头(非图形)!
首先,请确保您安装了ChromeDriver,Selenium依赖它来使用Google Chrome.
然后,通过在网址chrome:// settings/help中查看,确保您拥有版本为60或更高版本的Google Chrome
现在,您需要做的就是以下代码:
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
chrome_options = Options()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(chrome_options=chrome_options)
Run Code Online (Sandbox Code Playgroud)
如果你不知道如何使用Selenium,这里有一个快速概述:
driver.get("https://www.google.com") #Browser goes to google.com
Run Code Online (Sandbox Code Playgroud)
查找元素:使用ELEMENTS或ELEMENT方法.例子:
driver.find_element_by_css_selector("div.logo-subtext") #Find your country in Google. (singular)
Run Code Online (Sandbox Code Playgroud)
好!我找到了一个元素(或元素列表).但我现在该怎么办?
以下是您可以对元素elem执行的方法:
特殊命令:
小智 12
好消息:现在有一个支持javascript的请求模块:https : //pypi.org/project/requests-html/
from requests_html import HTMLSession
session = HTMLSession()
r = session('http://www.yourjspage.com')
r.html.render() # this call executes the js in the page
Run Code Online (Sandbox Code Playgroud)
BeautifulSoup我认为,这样做可以带来额外的好处,因此您可以执行以下操作
r.find('#myElementID').text
Run Code Online (Sandbox Code Playgroud)
它将按预期返回HTML元素的内容。
| 归档时间: |
|
| 查看次数: |
49737 次 |
| 最近记录: |