Python 无法处理请求的 POST 响应

霍斯罗夫

我正在使用 Python 从网站提取数据requests,但遇到了一个奇怪的问题。
我正在使用re来自我的帖子请求的响应来提取一些像这样的表数据:

import re
import requests

tables = re.compile(r'^\s*(<table width.*?table>)$', flags=re.DOTALL | re.MULTILINE)
with open(tableInfoFile, fileSaveFormat) as f:
    chartInfoPage = session.post(tableURL, headers=postLoginHeaders, data=data, verify=False)
    for table in re.findall(tables, chartInfoPage.content.decode('utf-8'), flags=re.DOTALL | re.MULTILINE):
        f.write(table)

然而,这并没有写任何东西!我已经测试了正则表达式,当我直接在响应数据(从浏览器复制)上使用它时,它工作得很好。
更奇怪的是,这段代码也能正常工作:

import re
import requests

tables = re.compile(r'^\s*(<table width.*?table>)$', flags=re.DOTALL | re.MULTILINE)
with open(tableInfoFile, fileSaveFormat) as f:
    chartInfoPage = session.post(tableURL, headers=postLoginHeaders, data=data, verify=False)
    with open('test.html', 'w') as temp:
        temp.write(chartInfoPage.content.decode('utf-8'))
    with open('test.html', 'r') as temp:
        data = temp.read()
    for table in re.findall(tables, data, flags=re.DOTALL | re.MULTILINE):
        f.write(table)

这对我来说毫无意义。我所做的就是将数据保存到文件中,然后读取它。这和直接使用数据有什么不同??
提前致谢。

编辑:哦,这是我尝试提取的表数据示例,如果有帮助的话:

<table width="100%" class="contentTable" cellpading=3>
<tr>
<td colspan=12 class="header">لیست دروس ارایه شده توسط دانشکده مهندسی عمران</td>
</tr>
  <tr>
    <td class="header" ><nobr> شماره درس</nobr></td>
    <td class="header" ><nobr>گروه</td>
    <td class="header" ><nobr>واحد</td>
    <td class="header" ><nobr>نام درس</td>
    <td class="header" ><nobr>پيشنياز و همنياز</td>
    <td class="header" ><nobr>ظرفيت</td>
    <td class="header" ><nobr>تعداد ثبت نامی</td>
    <td class="header" ><nobr>نام استاد</td>
    <td class="header" ><nobr>تاريخ امتحان</td>
    <td class="header" ><nobr>برنامه هفتگی</td>
    <td class="header" ><nobr>ملاحظات</td>
    <td class="header" ><nobr>پیغام به هنگام ثبت نام</td>
  </tr>

  <tr>
    <td  class="contentCell"><nobr>10021</td>
    <td  class="contentCell"><nobr>1</td>
    <td  class="contentCell"><nobr>1</td>
    <td  class="contentCell"><nobr>آز هیدرولیک</td>
    <td  class="contentCell" width=150>پيشنياز: 13410: 13110</td>
    <td class = "contentCell"><nobr><span dir="ltr"> 16</span></font></td>
    <td class="contentCell" ><nobr> &nbsp;</font></td>
    <td class="contentCell" width=150>Crossed out</font></td>
    <td  class="contentCell"><nobr><span dir=ltr>&nbsp;&nbsp;&nbsp;</span></td>
    <td  class="contentCell"><nobr> شنبه  8:0 تا 12:0 شنبه  13:0 تا 15:0</td>
    <td  class="contentCell">برگزاری این درس فقط با شرط ثبت نام قطعی حداقل 15 نفر امکان پذیر است 
    </td>
    <td  class="contentCell">برگزاری این درس فقط با شرط ثبت نام قطعی حداقل 15 نفر امکان پذیر است</td>
  </tr>
</table>
赤城88

如果您想提取/解析 html,BeautifulSoup 是您的最佳选择。在这种特殊情况下,您有<table>标签。

html = '''<table width="100%" class="contentTable" cellpading=3>
<tr>
<td colspan=12 class="header">لیست دروس ارایه شده توسط دانشکده مهندسی عمران</td>
</tr>
  <tr>
    <td class="header" ><nobr> شماره درس</nobr></td>
    <td class="header" ><nobr>گروه</td>
    <td class="header" ><nobr>واحد</td>
    <td class="header" ><nobr>نام درس</td>
    <td class="header" ><nobr>پيشنياز و همنياز</td>
    <td class="header" ><nobr>ظرفيت</td>
    <td class="header" ><nobr>تعداد ثبت نامی</td>
    <td class="header" ><nobr>نام استاد</td>
    <td class="header" ><nobr>تاريخ امتحان</td>
    <td class="header" ><nobr>برنامه هفتگی</td>
    <td class="header" ><nobr>ملاحظات</td>
    <td class="header" ><nobr>پیغام به هنگام ثبت نام</td>
  </tr>

  <tr>
    <td  class="contentCell"><nobr>10021</td>
    <td  class="contentCell"><nobr>1</td>
    <td  class="contentCell"><nobr>1</td>
    <td  class="contentCell"><nobr>آز هیدرولیک</td>
    <td  class="contentCell" width=150>پيشنياز: 13410: 13110</td>
    <td class = "contentCell"><nobr><span dir="ltr"> 16</span></font></td>
    <td class="contentCell" ><nobr> &nbsp;</font></td>
    <td class="contentCell" width=150>Crossed out</font></td>
    <td  class="contentCell"><nobr><span dir=ltr>&nbsp;&nbsp;&nbsp;</span></td>
    <td  class="contentCell"><nobr> شنبه  8:0 تا 12:0 شنبه  13:0 تا 15:0</td>
    <td  class="contentCell">برگزاری این درس فقط با شرط ثبت نام قطعی حداقل 15 نفر امکان پذیر است 
    </td>
    <td  class="contentCell">برگزاری این درس فقط با شرط ثبت نام قطعی حداقل 15 نفر امکان پذیر است</td>
  </tr>
</table>'''

.find_all('table')将存储与元素的列表<table>标签。然后只需通过索引选择您想要的表,或者只是遍历元素列表并将其打印出来,将其写入文件,执行您想要的操作:

import pandas as pd
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')

tables = soup.find_all('table')


for table in tables:
    print (table)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

python post请求不生成响应

来自分类Dev

使用request.post()在python中对XHR请求无响应

来自分类Dev

Python 从 API 请求 POST 和 GET 以获得响应

来自分类Dev

无法在 Python 中的 POST 方法中获得响应

来自分类Dev

如何处理来自Ajax POST请求的多个文件响应?

来自分类Dev

PHP在处理来自angularjs的POST请求后返回html响应

来自分类Dev

Node.js POST 请求响应的异步处理

来自分类Dev

Django对403的POST请求的响应

来自分类Dev

Firebase:响应 http POST 请求

来自分类Dev

获取 API POST 请求响应

来自分类Dev

无法遍历Angular 8中的POST请求JSON响应

来自分类Dev

无法捕获对节点服务器的 POST 请求的响应

来自分类Dev

cURL POST请求无法与python请求等效

来自分类Dev

Python请求库-从POST请求中抓取单独的JSON和HTML响应

来自分类Dev

Python响应HTTP请求

来自分类Dev

使用Google App Engine(Python)响应AJAX GET和POST请求

来自分类Dev

到 bytebin.lucko.me 的 HTTP POST 对 python 请求的响应与 jquery 的 ajax 不同。为什么?

来自分类Dev

Python请求:处理JSON响应,存储到列表还是字典?

来自分类Dev

如何从 POST 请求响应中获取响应头

来自分类Dev

响应不带位置的HTTP POST请求

来自分类Dev

iOS RestKit对POST请求的响应映射

来自分类Dev

从POST请求获取响应时输出未知

来自分类Dev

了解HTTP POST请求/响应过程

来自分类Dev

nginx响应POST请求提供静态文件

来自分类Dev

如何从 AngularJS POST 请求访问响应?

来自分类Dev

缓存对 Firebase 函数发出的 POST 请求的响应

来自分类Dev

Expressjs在POST请求后不发送响应

来自分类Dev

http post请求没有响应

来自分类Dev

POST请求的HTML表单下载响应

Related 相关文章

热门标签

归档