Javascript Scrapy xpath未提取包含特殊字符的div<;%=
我是个新手。我正在尝试从以下URL提取h2文本:'https://www.tysonprop.co.za/agents/" 我有两个问题:Javascript Scrapy xpath未提取包含特殊字符的div<;%=,javascript,python,html,scrapy,Javascript,Python,Html,Scrapy,我是个新手。我正在尝试从以下URL提取h2文本:'https://www.tysonprop.co.za/agents/" 我有两个问题: 我的xpath可以访问script元素,但在script标记中找不到h2或div元素。我甚至尝试过将HTML文件保存到我的机器上,然后删除这个文件,但同样的问题也发生了。我已经三次检查了我的xpath代码,看起来一切正常 当网站显示在我的浏览器中时,branch.branch_名称解析为“Tysen Properties总部”。如何获得值(即“Tysen
HTML摘录如下:
<script type="text/html" id="id_branch_template">
<div id="branch-<%= branch.id %>" class="clearfix margin-top30 branch-container" style="display: none;">
<h2 class="grid_12 branch-name margin-bottom20"><%= branch.branch_name %></h2>
<div class="branch-agents container_12 first last clearfix">
<div id="agents-list-left" class="agents-list left grid_6">
</div>
<div id="agents-list-right" class="agents-list right grid_6">
</div>
</div>
</div>
</script>
脚本内的
div
标签是文本。
要将其作为html,可以执行以下操作:
从scrapy.selector导入选择器
....
def解析(自我,响应):
script=Selector(text=response.xpath('//script[@id=“id\u branch\u template”]/text()).get())
div=script.xpath('./div[contains(@class,“分支容器”)]))
h2=div.xpath('.//h2[包含(@class,“分支名称”)]/text()).extract()
产生{'branchName':h2}
但是请注意,
h2
不包含任何文本,因此您的结果将是一个空数组Doesbranch。branch\u name
看起来像JSON格式的地址?是否有呼叫加载您正在查找的数据?也许,让我看看
通过浏览浏览器开发工具,您可以在“网络”选项卡中找到请求,并在请求之间进行搜索,您将看到哪些加载的数据正是您要查找的数据。因此:
导入json
进口羊瘙痒
TysonSpider类(scrapy.Spider):
名称='tyson_spider'
def启动请求(自):
url='1〕https://www.tysonprop.co.za/ajax/agents/?branch_id=25'
生成scrapy.Request(url=url,callback=self.parse)
def解析(self,response):
json_data=json.loads(response.text)
branch_name=json_数据['branch']['branch_name']
产生{'branchName':分支名称}
HTML代码是:script type=“text/HTML”id=“id\u branch\u template”>谢谢,这当然有帮助!我如何到达h2标题的部分?branch.branch\u在我的浏览器中查看站点时,名称解析为一个值-是否可以提取该值?要提取该值,您必须使用selenium
或splash
,或者您可以查看chrome上的“网络”选项卡并尝试在那里找到该值,我想这些信息来自一个AJAX调用。谢谢@Moein Kameli,这正是我需要的帮助。衷心感谢。
<script type="text/html" id="id_branch_template">
<div id="branch-<%= branch.id %>" class="clearfix margin-top30 branch-container" style="display: none;">
<h2 class="grid_12 branch-name margin-bottom20"><%= branch.branch_name %></h2>
<div class="branch-agents container_12 first last clearfix">
<div id="agents-list-left" class="agents-list left grid_6">
</div>
<div id="agents-list-right" class="agents-list right grid_6">
</div>
</div>
</div>
</script>