【问题标题】:BeautifulSoup TagBeautifulSoup 标签
【发布时间】:2019-02-11 12:28:45
【问题描述】:

我想以 Certificates[h3 tag] 的格式打印 - 然后是它下面的表格 然后是其他文档[h3] - 然后是它下面的表格。 但是使用 bs4,我可以单独找到这些文本值,而不是以某种格式一起找到。 我是bs4的新手。 页面链接是-https://www.zaubacorp.com/documents/KAKDA/U01122MP1985PTC002857 另外,我单独查找它们的代码是

import requests
import urllib.request
from bs4 import BeautifulSoup

def make_soup(url):
    thepage = urllib.request.urlopen(url)
    soupdata = BeautifulSoup(thepage,"html.parser")
    return soupdata

soup=make_soup
("https://www.zaubacorp.com/documents/KAKDA/U01122MP1985PTC002857)
soup.prettify()
divs =soup.findAll("td", {"class" :"tab-tc-2"})
divs
soup.findAll("td")
soup.findAll('h3',{'class':'pull-left'})
date = [i.get_text() for i in soup.findAll('td',{"class" :"tab-tc-1"})]
date
header = [i.get_text() for i in soup.findAll('h3',{'class':'pull-left'})]
header
soup.findAll('h3',{'class':'pull-left'})
import pandas as pd
data=pd.DataFrame({"Date":date,"Certificates":Certi})
data
data

【问题讨论】:

  • 我想要的是这个抓取有一个正确的格式 - 标题然后是它下面的表格。

标签: python html web-scraping beautifulsoup tags


【解决方案1】:

pandas read_html 会做吗?

import pandas as pd

tables = pd.read_html('https://www.zaubacorp.com/documents/KAKDA/U01122MP1985PTC002857')
for table in tables:
    print(table)

带标题:

import pandas as pd
import requests
from bs4 import BeautifulSoup as bs

url = 'https://www.zaubacorp.com/documents/KAKDA/U01122MP1985PTC002857'
res = requests.get(url)
soup = bs(res.content,'lxml')
headers = [header.text for header in soup.select('h3.pull-left')]
tables = pd.read_html(url)
items = zip(headers,tables)
for header, table in items:
    print(header)
    print(table)

【讨论】:

  • 哇@Qharr。这肯定会非常感谢你。你能解释一下 pd.read html 是如何帮助的,而 html 解析器没有
  • 另外,如果我想将此数据传输到 csv,我该怎么做?
猜你喜欢
  • 2015-10-12
  • 2011-06-03
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
  • 2020-06-04
  • 2021-12-05
  • 2012-11-04
  • 1970-01-01
相关资源
最近更新 更多