如何使用BeautifulSoap获取完整链接

时间:2019-06-02 03:56:46

标签: beautifulsoup

函数get(“ href”)没有返回完整链接。 html文件中存在链接:

link in html file

但是,函数link.get(“ href”)返回:

“ navhome.php?lightbox&dpxshig = / iprop_prod = 180-slim / tipo = fotolivro / width = 950 / height = 615 / control = true / tema = tema_02 / nome_tema = Q2wmYWFjdXRlO3NzaWNvIFByZXRV&cpmdsc = Z

sub_site =“ https://www.fotoregistro.com.br/navhome.php?vitrine-produto-slim

响应= urllib.request.urlopen(sub_site)

数据= response.read()

汤= BeautifulSoup(data,'lxml') 在汤中的链接。find_all('a'):

import PerfectScrollbar from 'react-perfect-scrollbar';
import 'react-perfect-scrollbar/dist/css/styles.css';

<PerfectScrollbar>
    <p> test 1 </p>
    <p> test 2 </p>
</PerfectScrollbar>

2 个答案:

答案 0 :(得分:0)

让我关注html中问题的特定部分:

<a class='warp_lightbox' title='Comprar' href='//www.fotoregistro.com.br/
navhome.php?lightbox&dpxshig=/iprop_prod=180-slim/tipo=fotolivro/width=950/height=615/control=true/tema=tema_02/nome_tema=Q2wmYWFjdXRlO3NzaWNvIFByZXRv&cpmdsc=MOZAO'><img src='
//sh.digipix.com.br/subhomes/_lojas_consumer/paginas/fotolivro/img/180slim/vitrine/classic_01_tb.jpg' alt='slim' />
                              </a>

您可以通过以下方式获得它:

for link in soup.find_all('a', {'class':'warp_lightbox'}):
    url = link.get("href")
    break

您发现url是:

'//www.fotoregistro.com.br/\rnavhome.php?lightbox&dpxshig=/iprop_prod=180-slim/tipo=fotolivro/width=950/height=615/control=true/tema=tema_02/nome_tema=Q2wmYWFjdXRlO3NzaWNvIFByZXRv&cpmdsc=MOZAO'

您可以在字符串的开头看到两个重要的模式:

  • //,这是保持当前协议的一种方式,请参见this;
  • \r,即ASCII回车(CR)。

打印时,您只会丢失此部分:

//www.fotoregistro.com.br/\r

如果您需要原始字符串,则可以在for循环中使用repr

print(repr(url))

您会得到:

//www.fotoregistro.com.br/\rnavhome.php?lightbox&dpxshig=/iprop_prod=180-slim/tipo=fotolivro/width=950/height=615/control=true/tema=tema_02/nome_tema=Q2wmYWFjdXRlO3NzaWNvIFByZXRv&cpmdsc=MOZAO

如果需要路径,可以替换初始部分:

base = 'www.fotoregistro.com.br/'

for link in soup.find_all('a', {'class':'warp_lightbox'}):
    url = link.get("href").replace('//www.fotoregistro.com.br/\r',base)
    print(url)

您会得到:

www.fotoregistro.com.br/navhome.php?lightbox&dpxshig=/iprop_prod=180-slim/tipo=fotolivro/width=950/height=615/control=true/tema=tema_02/nome_tema=Q2wmYWFjdXRlO3NzaWNvIFByZXRv&cpmdsc=MOZAO
www.fotoregistro.com.br/navhome.php?lightbox&dpxshig=/iprop_prod=180-slim/tipo=fotolivro/width=950/height=615/control=true/tema=tema_02/preview=true/nome_tema=Q2wmYWFjdXRlO3NzaWNvIFByZXRv&cpmdsc=MOZAO
.
.
.

不指定类别:

for link in soup.find_all('a'):
    url = link.get("href")
    print(repr(url))

答案 1 :(得分:0)

使用select并可以正常打印

node_modules

使用

package-lock.json

所有链接。