首页 > 解决方案 > 我如何刮掉介绍部分中的文字

问题描述

我正在尝试在介绍部分下抓取文本,但似乎得到 a"[]"作为输出

代码是:

import requests
import bs4
import lxml
import html5lib
from bs4 import BeautifulSoup
import re

result=requests.get("https://www.1mg.com/drugs/augmentin-625-duo-tablet-138629")

soup = bs4.BeautifulSoup(result.text,"lxml")

intro=soup.find(text=re.compile('Introduction')).parent.parent.find_all('div', attrs={"class": "DrugOverview__content___22ZBX"})
print(intro)

我正在 sublime 文本编辑器上编写代码并在 git bash 上运行它

PS:请尝试解释如何解决此问题,因为我是网络抓取的菜鸟,似乎还没有掌握它的窍门……谢谢

标签: pythonweb-scrapingbeautifulsouppython-requests

解决方案


我发现这个页面检查标题User-Agent- 也许它HTML为不同的设备(手机、平板电脑、笔记本电脑)生成不同的。

但它不能简单Mozilla/5.0——它必须User-Agent来自真正的网络浏览器。

您可以User-Agenthttps://httpbin.org/get上看到您的- 此页面对于测试脚本发送到服务器的内容很有用。

这段代码对我有用。

import requests
from bs4 import BeautifulSoup

headers = {
    "User-Agent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0"
}
 
url = "https://www.1mg.com/drugs/augmentin-625-duo-tablet-138629"

result = requests.get(url, headers=headers)
                        
soup = BeautifulSoup(result.text, "lxml")

intro = soup.find(text='Introduction').parent.parent.find('div', {"class": "DrugOverview__content___22ZBX"})

text = intro.get_text(strip=True)

print(text)

推荐阅读