Python Scrapy无法访问子div类

Python Scrapy无法访问子div类,python,html,xpath,web-scraping,scrapy,Python,Html,Xpath,Web Scraping,Scrapy,我正在使用Scrapy刮取此网页表格中的href链接。我能够访问divMVCGridTableHolder\u AdvancesEarchawardedProjects\u,但无法访问其子级,即div类行和div样式,我的尝试如下所示。是因为局部视图吗 html代码: <div id="MVCGridContainer_advancesearchawardedprojectsp_" data-key="" class="MVCGridContainer"> <!--Partia

我正在使用Scrapy刮取此网页表格中的href链接。我能够访问div
MVCGridTableHolder\u AdvancesEarchawardedProjects\u
,但无法访问其子级,即div类行和div样式,我的尝试如下所示。是因为局部视图吗

html代码:

<div id="MVCGridContainer_advancesearchawardedprojectsp_" data-key="" class="MVCGridContainer">
<!--Partial View!-->
<div class="row"></div>
<div style="overflow-x:auto;">
<table name="MVCGridTable_advancesearchawardedprojectsp" class="table table-striped table-bordered iris-grid">
<thead></thead>
<tbody>
      <tr>
         <td>
         <a class="grid-link" target="_top" href="https://researchgrant.gov.sg/pages/Awarded-Project-Detail.aspx?AXID=MOH-000080&amp;CompanyCode=moh">INVESTIGATING DIVERSIFIED BIFUNCTIONAL MACROCYCLES BY PHAGE DISPLAY AS A NOVEL TECHNOLOGY PLATFORM</a>
         </td>
</div></div>

刮壳尝试:

In [12]: quote = response.xpath('//div[@id="MVCGridTableHolder_advancesearchawardedprojectsp_"]')

In [13]: quote
Out[13]: [<Selector 
xpath='//div[@id="MVCGridTableHolder_advancesearchawardedprojectsp_"]' data='<div id="MVCGridTableHolder_advancese...'>]

In [14]: quote = response.xpath('//div[@id="MVCGridTableHolder_advancesearchawardedprojectsp_"]/div[@class="row"]')

In [15]: quote
Out[15]: []
[12]中的
:quote=response.xpath('//div[@id=“MVCGridTableHolder\u advancesearchawardedprojectsp\”)
在[13]中:引用
出[13]:[]
在[14]中,quote=response.xpath('//div[@id=“MVCGridTableHolder\u advanceSearchwardedProjectSP\]/div[@class=“row”]”)
在[15]中:引用
Out[15]:[]

如果在加载此页面时在浏览器中打开browser developer tools,您将看到会发送一个单独的XHR请求来加载该部分视图内容。您可以在代码中模拟该请求

使用
请求的示例

import requests


with requests.Session() as session:
    session.verify = False

    session.headers = {
        'X-Requested-With': 'XMLHttpRequest'
    }
    response = session.post("https://researchgrant.gov.sg/eservices/mvcgrid", params={
        'keyword': '',
        'source': 'sharepoint',
        'type': 'project',
        'status': 'open',
        'page': '2',
        '_pp_projectstatus': '',
        '_pp_hiname': 'ab',
        '_pp_piname': 'pua',
        '_pp_source': 'sharepoint',
        '_pp_details': ''},
        data={
            'name': 'advancesearchawardedprojectsp'
        })

    print(response.text)
在Scrapy中,您可以使用
FormRequest


两件事:1。不要将代码作为图像发布,而要将其作为文本发布2。很可能,结果是由浏览器通过附加请求动态加载的,并由浏览器呈现(“部分视图”注释有点引用该注释),始终将代码、数据和完整的错误消息作为有问题的文本。您的代码在哪里?你用什么命令来获取它?这个页面的URL是什么?此页面是否使用JavaScript添加元素?Scrapy无法运行JavaScript。并将其添加为文本。Python无法从图像中读取代码和数据。嘿,伙计们,谢谢你们的输入,我做了一些更新。。请耐心地指导我,因为我对Scrapy是个新手。是的,经过检查,我认为它使用了Javascript。对于使用Javascript的网页,有什么建议吗?@alecxe那么,在这种情况下,有可能刮取结果吗?alrite非常感谢!我会尽快检查并将其标记为答案!谢谢!多亏了您的帮助,我已经能够抓取数据了,但在FormRequest中,参数似乎不起作用。你知道为什么吗?带“ab”的“hiname”和带“pua”的“piname”应该只返回1个结果,而不是返回所有结果