【问题标题】:Scraping data using BeautifulSoup使用 BeautifulSoup 抓取数据
【发布时间】:2020-01-08 13:02:13
【问题描述】:

我正在尝试从该站点将数据抓取到字典中,

from bs4 import BeautifulSoup 
import requests 
from pprint import pprint

page = requests.get('https://webscraper.io/') 
soup = BeautifulSoup(page.text, "lxml")

info = []
for x in range(1,7):
    items = soup.findAll("div",{"class":f"info{x}"})
    info.append(items)

但是,HTML 标记并未被删除。

【问题讨论】:

  • 试试 items.text 而不是 items。

标签: python html python-3.x web-scraping beautifulsoup


【解决方案1】:

您需要使用.text。然后要按照您想要的方式进行操作,需要进行一些字符串操作。

from bs4 import BeautifulSoup 
import requests 
from pprint import pprint

url = 'https://webscraper.io/'
page = requests.get(url) 
soup = BeautifulSoup(page.text, "lxml")


info = []
for x in range(1,7):
    item = soup.find("div",{"class":"info%s" %x}).text.strip().replace('\n',': ')
    info.append(item)

info = '\n'.join(info)
print (info)

【讨论】:

    【解决方案2】:

    这样的方法可能有用吗? (将 webscraper.io 网址替换为您的实际请求网址;此外,您仍然需要从输出中清除 \n 字符):

    from bs4 import BeautifulSoup 
    import requests 
    from pprint import pprint
    
    page = requests.get('https://webscraper.io/') 
    soup = BeautifulSoup(page.text, "lxml")
    
    info = []
    for x in range(1,7):
        items = soup.findAll("div",{"class":f"info{x}"})
        info += [item.text for item in items]
    

    即item.text,并将结果数组与 info 连接起来

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 2017-10-15
      • 2015-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多