【发布时间】:2020-10-19 01:41:46
【问题描述】:
我想从网页上抓取日期,日期的文本(在脚本标签之后)是由 JavaScript 注入的:
<div class="row">
<span class="LName"><a target="_blank" href="http://google.com">[me too]</a></span>
<script language="Javascript" type="text/javascript">formatDate('2020,5,23,09,00,00',1)</script>6/23/2020 10:00 Tuesday
</div>
此标签上的正确日期是 2020 年 6 月 23 日。 我使用 beautifulsoup 创建了代码,但它返回错误的日期:
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:76.0) Gecko/20100101 Firefox/76.0'}
r = requests.get(u, headers=headers)
soup = BeautifulSoup(r.content, 'html.parser')
我试试:
soup.select('div.row > script')[0].get_text()
返回:
"formatDate('2020,5,23,09,00,00',1)"
和:
soup.select('div.row')[0].get_text()
返回:
"\n[me too] formatDate('2020,5,23,09,00,00',1)\n"
当我使用 Chrome 检查标签时,我可以看到脚本标签后面的日期文本
当我执行时:
soup.select('div.row')
它返回没有日期文本的标签
JavaScript 注入的日期文本,我只需要使用 Beautifulsoup 来抓取它,而不是使用 selenium
【问题讨论】:
-
您所追求的日期不在脚本标签内,不是吗?你可以在它前面看到
</script>。 -
是的,你是对的,我编辑了标题
-
文本是由 Javascript 注入的,我只需要使用 Beautifulsoup 来抓取它,而不是使用 selenium
-
我会创建一个新问题
标签: python html web-scraping beautifulsoup css-selectors