如何在不输出的<script>标记内刮取表:soup = page.content?

时间:2018-03-17 13:20:17

标签: python beautifulsoup python-requests

我正在使用 beautiful soup 4 requests 从需要登录的网站上抓取一些信息。

&#xA;&#xA;
 导入请求&#xA;来自lxml import html&#xA;来自bs4 import BeautifulSoup&#xA;&#xA; username =“username”&#xA; password =“password”&#xA;&#xA; login_url =“mywebsite.com/login"
url =”mywebsite.com/profile"

def main():&# XA; request.Session()as s:&#xA;&#xA; #获取登录csrf令牌&#xA; result = s.get(login_url)&#xA; tree = html.fromstring(result.text)&#xA; authenticity_token = list(set(tree.xpath(“// input [@ name ='lt'] / @ value”)))[0]&#xA; execution = list(set(tree.xpath(“// input [@ name ='execution'] / @ value”)))[0]&#xA; _eventId = list(set(tree.xpath(“// input [@name ='_ eventId'] / @ value”)))[0]&#xA;&#xA; #创建有效载荷&#xA; payload = {&#xA; “username”:用户名,&#xA; “密码”:密码,&#xA; “lt”:authenticity_token,&#xA; “执行”:执行,&#xA; “_eventId”:_ eventId&#xA; }&#XA;&#XA; #执行登录&#xA; r = s.post(login_url,data = payload,headers = dict(referer = login_url))&#xA;&#xA; #授权请求&#xA; page = s.get(url)&#xA;&#xA; #制作汤&#xA; soup = BeautifulSoup(page.content,'lxml-xml',from_encoding ='utf-8')&#xA;&#xA; #汤和#xA; data = []&#xA;&#xA; table = soup.find('table',attrs = {'class':“basicList.wide”})&#xA;&#xA; table_body = table.find('tbody')&#xA; rows = table_body.find_all('tr')&#xA;&#xA;行中的行:&#xA; cols = row.find_all('td')&#xA; cols = [elestext.strip()for cols cols]&#xA; data.append([如果是ele,则为ele中的ele])&#xA; print(data)&#xA;&#xA;&#xA;&#xA;&#xA; if __name__ =='__ main __':&#xA; main()&#xA;  
&#xA;&#xA;

我遇到的问题是我的 page.content 我传入<代码> BeautifulSoup()函数,以便创建我的,不包含我想要从中抓取数据的表,即使它显示在我的屏幕和HTML检查元素中。这是从 print(汤)得到的相关输出(它实际上比这更多但是这些是表应该之前和之后的部分。

&#xA;&#xA;
 &lt; a id =“p_StudentRegistrationWAGadget_WAR_StudentRegistrationWAGadgetportlet_INSTANCE_eiG4”/&gt;&#xA;&#xA;&lt; div class =“portlet-borderless-container”style =“”&gt;&#xA;&#xA;&lt; div class =“portlet-body”&gt;&#xA;&#xA;&lt; div id =“StudentRegistrationWAGadget3fe0ccfe435425a6”/&gt;&#xA;&# xA;&lt; script type =“text / javascript”&gt; /**/window.qkAppReady.done(function(){require(["qk"],function(a){a.mainSession.newGadget("WebAdvisorGadget“ ,{initialScreen:“ST-XWESTS04C”,enableOlark:true,container:“#StudentRegistrationWAGadget3fe0ccfe435425a6”})})}); / ** /&lt; / script&gt;&#xA;&#xA;&lt; / div&gt;&lt; ; / div&gt;&lt; / div&gt;&lt; / div&gt;&lt; / div&gt;&lt; / div&gt;&lt; / div&gt;&lt; form action =“”id =“hrefFm”method =“post”name =“hrefFm “/&gt;&lt; / div&gt;&#xA;&#xA;&lt;! - 开始页脚 - &GT; &#xA;  
&#xA;&#xA;

以下是页面的Inspect Element的一些图片,以及特定的表格,我想抓一下。我用箭头标出了相关的点。

&#xA;&#xA;

HTML数据1

&#xA;&#xA;

HTML数据2

&#xA;&#xA;

我不确定从哪里开始解决这个问题,并且感谢任何帮助,特别是有关我究竟是什么的信息我做错了,或者是我用拼错误解的概念,这是我混淆的根本原因。我甚至不知道标题是否准确地表示我的问题是什么,因为我不知道用于解释为什么我无法访问该表的语言。

&#xA;&#xA;

提前谢谢!

&#xA;

0 个答案:

没有答案