【发布时间】:2020-11-30 03:23:48
【问题描述】:
我正在尝试抓取这个site,我正在使用requests 库和BeautifulSoup。所以这里的交易伙计们,我只是做一个requests.get() 并将其.content 转换为bs4 对象。 (我的解析器是"html5lib")
在此之前,正如您在此处的图片中看到的,此标签上有一个class 属性。
你可以自己在网站上做一个检查元素,看看我在说什么。您可以访问site 并右键单击框字并检查元素。
现在,当我得到 .content 并将其转换为 bs4 对象并打印出 soup 变量时,您可以看到我在箭头中指出的 <p> 标签 没有 不再是class 属性,它只是一个简单的<p>。在这里检查一下,我已经尝试在 sublime text 上查找类值本身但没有结果,所以这意味着class 属性确实是不包含。
(汤的价值我不能全部放在这里,因为太长了,建议你也打印出来)
您可能想知道为什么我需要class 属性?我需要它来收集基于该类的相关数据,我需要它专门基于该类,因为我不能只是 .find() 一个 p 标签,因为在很多情况下会有其他 p 标签但是它们不是我想要获取的数据,所以我只是准确地说。
这也是我制作的简单代码,还请注意我已经尝试在其上放置用户代理,因为我也搜索过尝试像浏览器一样伪造,但仍然没有运气:(有人可以帮忙我也告诉我为什么会这样?谢谢!
import requests
from bs4 import BeautifulSoup
word = "opierać"
url = f"https://pl.wiktionary.org/wiki/{word}#{word}_(j%C4%99zyk_polski)"
headers = {"User-Agent": "Mozilla/5.0 (X11; CrOS x86_64 12871.102.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.141 Safari/537.36"}
r = requests.get(url,headers=headers)
print("Status code: ",r.status_code)
soup = BeautifulSoup(r.content,"html5lib")
print(soup)
【问题讨论】:
-
谢谢,但 API 似乎没有像我提供的那样从特定页面收集数据的任务......我认为它似乎不同:(
-
如果是英文的话会有所帮助。我不明白。您想要页面中没有
class的p元素,但您想要class? -
该标签
<p>的类似乎是由 JavaScript 代码生成的,因此您将无法使用 BeautifouSoup 和 requests来获取它>,而您可以使用 Selenium。或者尝试在不依赖课程的情况下获取该信息。 -
我们不需要它是英文的,因为我也不知道如何说波兰语:D 是的,我想知道同样的事情.. 可能是因为 javascript.. 有吗有办法吗?正如您在图像上看到的那样,类属性在那里,但是当我使用请求获取它并解析它时......类属性消失了。
标签: python python-3.x web-scraping beautifulsoup python-requests