使用 python 在 javascript 中搜索字符串
Search a string in javascript using python
根据我之前的问题:
我试图制作另一个从 javascript 获取数据的脚本。当然是拿到网页内容后
但是,就是没有显示我想要的内容。我想从页面的 javascript 中找到 "content_id"。这是页面:- 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' object has no attribute 'text'
知道如何解决这个问题吗?
您的正则表达式模式有两个问题:
- 引号在脚本内容中用反斜杠转义,请考虑到这一点
- 冒号后有一个空格
这里是固定版本:
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)
根据我之前的问题:
我试图制作另一个从 javascript 获取数据的脚本。当然是拿到网页内容后
但是,就是没有显示我想要的内容。我想从页面的 javascript 中找到 "content_id"。这是页面:- 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' object has no attribute 'text'
知道如何解决这个问题吗?
您的正则表达式模式有两个问题:
- 引号在脚本内容中用反斜杠转义,请考虑到这一点
- 冒号后有一个空格
这里是固定版本:
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)