1

lxml.htmlを使用してpython 2.7でページをスクレイピングしていますが、次のことを行う必要があります...

1) この行がページ上にあるかどうかを調べます。私は実際にparent_asinが存在するかどうかを確認しています。すべてのページにあるわけではありません。

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

2) 存在する場合、B0000DB87U を取得するにはどうすればよいですか? これは、parent_asin がページにある場合、ページごとに変更されます。これはすべて JavaScript で記述されており、lxml を使用して html を取得および解析しています。JS には別のアプローチが必要です。

4

1 に答える 1

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]
于 2012-04-18T04:16:13.013 に答える