使用selenium提取script节点的内容失败,都是返回空字符串,提取的网址为https://mm.taobao.com/self/model_info.htm?user_id=687471686&is_coment=false。
需要提取的内容如下图红框所示,其中type="text/javascript":
代码如下:
if __name__ == '__main__': browser = webdriver.Chrome() browser.get('https://mm.taobao.com/self/model_info.htm?user_id=687471686&is_coment=false') time.sleep(5) driverElems = browser.find_elements_by_xpath('//script[@type="text/javascript"]') for x in driverElems: print x.text # 为空字符
解决方法一:使用BeautifulSoup库来提示script的内容,代码如下:
if __name__ == '__main__': browser = webdriver.Chrome() browser.get('https://mm.taobao.com/self/model_info.htm?user_id=687471686&is_coment=false') time.sleep(5) from bs4 import BeautifulSoup bsObj = BeautifulSoup(browser.page_source, 'html.parser') bsElems = bsObj.find_all('script', type='text/javascript') for x in bsElems: print x.string
PS:安装BeautifulSoup库:
pip install beautifulsoup4
解决方法二:使用正则表达式,代码如下:
if __name__ == '__main__': browser = webdriver.Chrome() browser.get('https://mm.taobao.com/self/model_info.htm?user_id=687471686&is_coment=false') time.sleep(5) import re r = re.findall(r'<script type="text/javascript">\n([\s\S]+?)</script>', browser.page_source, re.M) print r其中re.M表示多行匹配,?表示非贪婪模式,\s表示匹配任意空白字符,等价于 [\t\n\r\f],\S表示匹配任意非空字符。