【发布时间】:2020-04-02 03:35:26
【问题描述】:
我正在使用 Scrapy 来抓取此网页 https://researchgrant.gov.sg/eservices/advanced-search/?keyword=&source=sharepoint&type=project&status=open&page=2&_pp_projectstatus=&_pp_hiname=ab&_pp_piname=pua&_pp_source=sharepoint&_pp_details=#project 中表格中的 href 链接。我可以访问 div MVCGridTableHolder_advancesearchawardedprojectsp_ 但无法访问它的子元素,即 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&CompanyCode=moh">INVESTIGATING DIVERSIFIED BIFUNCTIONAL MACROCYCLES BY PHAGE DISPLAY AS A NOVEL TECHNOLOGY PLATFORM</a>
</td>
</div></div>
Scrapy shell 尝试:
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]: []
【问题讨论】:
-
两件事:1. 不要将您的代码发布为图像,而是将其发布为文本 2. 很可能,结果是由浏览器动态加载并附加请求并由浏览器呈现(那里的“部分观点”评论指的是那个)
-
始终将代码、数据和完整的错误消息作为有问题的文本。
-
你的代码在哪里?你用什么命令来获取它?此页面的 URL 是什么?此页面是否使用 JavaScript 添加元素? Scrapy 无法运行 JavaScript。并将其添加为文本。 Python 无法从图像中读取代码和数据。
-
大家好,感谢您的意见,我已经进行了一些更新。请耐心指导我,因为我是 Scrapy 的新手。是的,在检查后我认为它使用了 Javascript。对抓取使用 Javascript 的网页有什么建议吗?
-
@alecxe 那么在这种情况下是否可以抓取结果?
标签: python html xpath web-scraping scrapy