我正试图用漂亮的soup抓取一个webpage,但我遇到了一个标签问题,它神秘地改变了浏览器中显示的内容和终端中接收到的内容。
好的,上面的标签对应于我浏览器中上面的HTML标签。 有一次我用“美丽”来解析它,我做到了:
from bs4 import BeautifulSoup
import requests
url = "http://www.allocine.fr/film/fichefilm_gen_cfilm=144185.html"
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
trailer = soup.find(title="Bandes-annonces")
print trailer
哪个输出:
<span class="ACrL3ZACrpZGVvL3BsYXllcl9nZW5fY21lZGlhPTE5NTYxOTgyJmNmaWxtPTE0NDE4NS5odG1s item trailer icon icon-play-mini" title="Bandes-annonces">
Bandes-annonces
</span>
我想知道为什么我的“a”标签突然变成了“span”标签?我怎样才能避免呢?你知道吗
有一些问题,一些标记是使用Javascript创建的,实际上有两个标记有一个title=“Bandes annonces”,您在输出中看到的是第一次出现的模糊数据,它是用嵌入子字符串编码的base-64,您可以在一个具有
AC.config = {
的Js函数中看到以下内容:从请求返回的源中的每个标记都包含编码数据,如acrl3zacrpzgvvl3bsyxllc9nzw5fy21lzglhpte5ntyxotgyjmnawxtpte0nde4ns5odg1s
您可以看到我们是否替换前缀ACr和base-64的任何出现,并解码剩余的字符串:
我们得到了答案。你知道吗
如果您想获得带有标题的标记,可以使用css类之一:
如果我们运行代码:
给你第二次出现的标签,标题=。。你知道吗
然后获取href:
你可以看到,从那个网站上抓取数据并不是一件很直接的事情,混淆很可能是有原因的,因为他们很可能不想让你这么做,所以使得抓取变得更困难。你知道吗
相关问题 更多 >
编程相关推荐