网页抓取请求 python

Posted

技术标签:

【中文标题】网页抓取请求 python【英文标题】:Web scraping requests 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。 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案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) | ~ |表达式或语句中出现意外的标记“:”。

以上是关于网页抓取请求 python的主要内容,如果未能解决你的问题,请参考以下文章

请教网页里的特定数据怎么抓取?

[python 2.7抓取网页]如何抓取.js里面的内容(下拉框里面的中文字符列表)

Python进阶篇五Python爬虫的抓取网页

python怎么抓取渲染后的页面

如何利用python读取网页中变量的内容

抓取网页请求,然后用Postman发送请求