使用python在javascript中搜索字符串

时间:2015-09-27 16:40:09

标签: javascript python regex python-2.7 beautifulsoup

按照我之前的问题: how to fetch javascript contents in python

我尝试制作另一个从javascript中获取数据的脚本。获得网页内容后当然。

但是,它只是没有显示我想要的内容。我想找到" content_id"来自页面的javascript。这是页面: - http://www.hulu.com/watch/815743

这就是我现在所拥有的。

import re
import requests
from bs4 import BeautifulSoup
import os
import fileinput


Link = 'http://www.hulu.com/watch/815743'
q = requests.get(Link)
soup = BeautifulSoup(q.text)
#print soup
subtitles = soup.findAll('script',{'type':'text/javascript'})
pattern = re.compile(r'"content_id":"(.*?)"', re.MULTILINE | re.DOTALL)
script = soup.find("script", text=pattern)
print pattern.search(script.text).group(1)

我收到此错误:

  

AttributeError:' NoneType'对象没有属性' text'

任何想法如何解决这个问题..?

1 个答案:

答案 0 :(得分:2)

正则表达式模式中存在两个问题:

  • 引号在脚本内容中使用反斜杠转义,将其纳入考虑范围
  • 冒号后面有空格

这是固定版本:

pattern = re.compile(r'\\"content_id\\":\s*\\"(.*?)\\"', re.MULTILINE | re.DOTALL)

适合我,因此获得60585710

仅供参考,这是我正在执行的完整代码:

import re

import requests
from bs4 import BeautifulSoup

Link = 'http://www.hulu.com/watch/815743'
q = requests.get(Link)
soup = BeautifulSoup(q.text)

pattern = re.compile(r'\\"content_id\\":\s*\\"(.*?)\\"', re.MULTILINE | re.DOTALL)
script = soup.find("script", text=pattern)
print pattern.search(script.text).group(1)