【问题标题】:Web scraping requests python网页抓取请求 python
【发布时间】:2022-01-18 08:30:55
【问题描述】:

大家早上好,我正在尝试访问网页的 html 代码,我已经通过 python 登录,但只有在我打印页面后,html 代码不像我打开它那样完整在浏览器中...

loginurl = ('https://sgv.ivu-cloud.com/mbweb/j_security_check')
secure_url = ('https://sgv.ivu-cloud.com/mbweb/main/matter/desktop/main-menu')

session = HTMLSession()

payload = {
    'j_username' : creds.username,
    'j_password': creds.password
    }

s = requests.Session()
s.post(loginurl, data=payload)
r = s.get((secure_url), cookies={'from-my': 'browser'})
soup = BeautifulSoup(r.content, 'html.parser')
c = session.get('https://sgv.ivu-cloud.com/mbweb/main/matter/desktop/main-menu#duty-details?beginDate=2021-12-14&allocatedEmployeeId=22480')
d = s.get('https://sgv.ivu-cloud.com/mbweb/main/matter/desktop/main-menu#duty-details?beginDate=2021-12-14&allocatedEmployeeId=22480')



print(d)

这是答案:

IVU.plan 门户 var mbwebBaseUrl = '/mbweb';
    <script type="text/javascript" src="/mbweb/struts/js/base/jquery-2.2.4.min.js"></script>

    <script type="text/javascript" src="/mbweb/struts/js/base/jquery-ui.min.js?s2j=4.0.3"></script>

        <script type="text/javascript"

                src="/mbweb/struts/i18n/datepicker-de.min.js?s2j=4.0.3"></script>
$(函数(){ jQuery.struts2_jquery.version = "4.0.3"; jQuery.struts2_jquery.loadAtOnce = true; jQuery.scriptPath = "/mbweb/struts/"; jQuery.struts2_jquery.local = "de"; jQuery.struts2_jquery.gridLocal = "de"; jQuery.struts2_jquery.timeLocal = "de"; jQuery.struts2_jquery.datatablesLocal = "de"; jQuery.ajaxSettings.traditional = true; jQuery.ajaxSetup({ 缓存:假 }); jQuery.struts2_jquery.require("js/struts2/jquery.ui.struts2.min.js?s2j=4.0.3"); }); <link id="jquery_theme_link" rel="stylesheet" href="/mbweb/struts/themes/smoothness/jquery-ui.css?s2j=4.0.3" type="text/css"/> 600

【问题讨论】:

  • 你可以使用硒。该网站正在使用 js 作为页面内容。因此,为了加载页面,您可以使用 selenium。它还将帮助您获取页面 HTML。
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: python authentication session python-requests


【解决方案1】:

您可以使用您的代码登录并获取 cookie。 然后您可以将 cookie 传递给 selenium 并继续

from selenium import webdriver
driver = webdriver.Firefox(executable_path="driver/geckodriver.exe")
for c in s.cookies:
    driver.add_cookie({'name': c.name, 'value': c.value})

driver.get('https://sgv.ivu-cloud.com/mbweb/main/matter/desktop/main-menu#duty-details?beginDate=2021-12-14&allocatedEmployeeId=22480')

这仅在您首先使用您的代码登录时才有效,因此需要在最后将其添加到您的代码中

【讨论】:

  • 我必须更改字符串中的值吗? (driver.add_cookie({'name': c.name, 'value': c.value})),如果我按照您编写的代码执行代码,我会收到此错误:arserError: Line | 1 | driver.add_cookie({'name': c.name, 'value': c.value}) | ~ |表达式或语句中出现意外的标记“:”。
猜你喜欢
  • 2018-03-22
  • 2016-02-21
  • 2020-04-20
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 2015-06-24
相关资源
最近更新 更多