Python Crawler - 检查是否存在javascript行,如果存在,则解析它

时间:2012-04-18 01:34:11

标签: python

我正在使用lxml.html在python 2.7中抓取一个页面,我需要执行以下操作...

1)找出该行是否在页面上。我实际上是在寻找parent_asin是否存在。它不在每一页上。

DetailPage.StateController.setState('parent_asin', 'B0000DB87U');

2)如果它确实存在,我该如何获得B0000DB87U?当parent_asin在页面中时,每个页面都会更改。这都是在javascript中,我使用lxml来获取和解析html。需要JS的另一种方法。

1 个答案:

答案 0 :(得分:2)

您可以使用lxml提取<script>标记的所有内容,然后使用正则表达式解析它们。

未经测试的例子:

doc = lxml.html.parse(url)
scripts = doc.xpath('//script')
for script in scripts:
    match = re.findall(r"DetailPage\.StateController\.setState\('parent_asin', '(.*)'\);", script.text)
    if match:
        print match[0]