【问题标题】:Using Beautiful soup to find a phone number for company name and address使用 Beautiful soup 查找公司名称和地址的电话号码
【发布时间】:2021-12-27 12:31:07
【问题描述】:

我有一个脚本,它可以在网站上抓取西班牙公司的名称、地区和省份。 html 中有另一个链接,它会将您带到包含电话号码的页面,但是当我尝试抓取 html 时,它会打印“none”。有没有办法让脚本自动移动到页面,把数字刮下来和公司行匹配?

import requests
from googlesearch import search
from bs4 import BeautifulSoup
for page in range(1,65):
    url = "https://www.expansion.com/empresas-de/ganaderia/granjas-en-general/{page}.html".format(page =page)

    page = requests.get(url)
    soup = BeautifulSoup(page.content, "html.parser")
    lists = soup.select("div#simulacion_tabla ul")

#scrape the list
    for lis in lists:
        title = lis.find('li', class_="col1").text
        location = lis.find('li', class_="col2").text
        province = lis.find('li', class_="col3").text
        link = lis.find('href', class_ ="col1")
        info = [title, location, province, link]
print(info)

或者,有没有办法使用 googlesearch 库来做到这一点?

非常感谢

【问题讨论】:

  • 如何从第二个链接获取数据?您是在创建一个新请求还是只是尝试用 bs4 解析它?从您的问题中看不到此信息。
  • 哦,对,这是有道理的。我试图把这一切合二为一。我将不得不创建第二个请求以获取数字。

标签: python beautifulsoup google-search


【解决方案1】:

第一个网址"https://www.expansion.com/empresas-de/ganaderia/granjas-en-general/index.html"不是

"https://www.expansion.com/empresas-de/ganaderia/granjas-en-general/1.html"

因此,您的脚本不会返回输出。

你可以这样试试

import requests
# from googlesearch import search
from bs4 import BeautifulSoup
baseurl = ["https://www.expansion.com/empresas-de/ganaderia/granjas-en-general/index.html"]

urls = [f'https://www.expansion.com/empresas-de/ganaderia/granjas-en-general/{i}.html'.format(i) for i in range(2,5)]


allurls = baseurl + urls
print(allurls)


for url in allurls:

    page = requests.get(url)
    soup = BeautifulSoup(page.content, "html.parser")
    lists = soup.select("div#simulacion_tabla ul")

    #scrape the list
    for lis in lists:
        title = lis.find('li', class_="col1").text
        location = lis.find('li', class_="col2").text
        province = lis.find('li', class_="col3").text
        link = lis.select("li.col1 a")[0]['href']
        info = [title, location, province, link]
        print(info)

【讨论】:

  • 嗨 Samsul,这仍然为链接变量返回“none”。我相信问题出在这条线上。 --> link = lis.find('href', class_="col1")
  • 试试看 .link = lis.select("li.col1 a")[0]['href']
  • 是的,这行得通!我似乎无法编辑脚本以将其批准为正确的解决方案。如果可以的话,我会为你做的。非常感谢!
  • 编辑了答案
猜你喜欢
  • 2011-11-25
  • 2022-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-13
  • 2014-10-30
相关资源
最近更新 更多