Предоставлен список сайтов, поиск и возврат информации в Python - PullRequest
0 голосов
/ 20 марта 2019

Я создал функцию, которая возвращает список URL-адресов с указанием названия конкретной компании. Я хочу узнать, выполнить поиск в этом списке URL-адресов и найти информацию о том, принадлежит ли компания другой компании.

Пример: компания "Маркето" была приобретена Adobe.

Я хочу узнать, была ли какая-то компания приобретена и кем.

Вот что у меня есть:

import requests
from googlesearch import search
from bs4 import BeautifulSoup as BS


def get_url(company_name):
    url_list = []
    for url in search(company_name, stop=10):
        url_list.append(url)
    return url_list


test1 = get_url('Marketo')
print(test1[7])


r = requests.get(test1[7])
html = r.text
soup = BS(html, 'lxml')
stuff = soup.find_all('a')


print(stuff)

Я новичок в изучении веб-страниц и не знаю, как на самом деле искать по каждому URL (если я могу) и находить информацию, которую я ищу.

Значением test1 является следующий список:

['https://www.marketo.com/', 'https://www.marketo.com/software/marketing-automation/', 'https://blog.marketo.com/', 'https://www.marketo.com/software/', 'https://www.marketo.com/company/', 'https://www.marketo.com/solutions/pricing/', 'https://www.marketo.com/solutions/', 'https://en.wikipedia.org/wiki/Marketo', 'https://www.linkedin.com/company/marketo', 'https://www.cmswire.com/digital-marketing/what-is-marketo-a-marketers-guide/']

Ответы [ 3 ]

1 голос
/ 24 марта 2019

Я хочу узнать, была ли приобретена какая-то компания и кем

Вы можете очистить веб-сайт crunchbase , чтобы получить эту информацию. Недостатком является то, что вы будете ограничивать поиск по их сайту. Чтобы расширить это, вы могли бы также включить некоторые другие сайты.

import requests
from bs4 import BeautifulSoup
import re
while True:
    print()
    organization_name=input('Enter organization_name: ').strip().lower()
    crunchbase_url='https://www.crunchbase.com/organization/'+organization_name
    headers={
        'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
    }
    r=requests.get(crunchbase_url,headers=headers)
    if r.status_code == 404:
        print('This organization is not available\n')
    else:
        soup=BeautifulSoup(r.text,'html.parser')
        overview_h2=soup.find('h2',text=re.compile('Overview'))
        try:
            possible_acquired_by_span=overview_h2.find_next('span',class_='bigValueItemLabelOrData')
            if possible_acquired_by_span.text.strip() == 'Acquired by':
                acquired_by=possible_acquired_by_span.find_next('span',class_='bigValueItemLabelOrData').text.strip()
            else:
                acquired_by=False
        except Exception as e:
                acquired_by=False
                # uncomment below line if you want to see the error
                # print(e)
        if acquired_by:
            print('Acquired By: '+acquired_by+'\n')
        else:
            print('No acquisition information available\n')

    again=input('Do You Want To Continue? ').strip().lower()
    if  again not in ['y','yes']:
        break

Пример вывода:

Enter organization_name: Marketo
Acquired By: Adobe Systems

Do You Want To Continue? y

Enter organization_name: Facebook
No acquisition information available

Do You Want To Continue? y

Enter organization_name: FakeCompany
This organization is not available

Do You Want To Continue? n

Примечания

  • Прочтите Условия использования crunchbase и запросите их согласие, прежде чем использовать его в коммерческих проектах.

  • Также ознакомьтесь с crunchbase api - я думаю, что это будет законный способ продвинуться вперед в том, что вы просите.

1 голос
/ 25 марта 2019

Как уже упоминалось в других ответах crunchbase - хорошее место для получения информации такого типа, но вам потребуется браузер без головы, чтобы удалить базу данных crunchbase. такие как селен


Если вы используете Ubuntu, установить Selenium довольно просто. Selenium требует драйвера для взаимодействия с выбранным браузером. Например, Firefox требует geckodriver

  • pip install селен
  • sudo pip3 установить селен --upgrade

установить последнюю версию geckodriver

Добавьте драйвер в PATH, чтобы другие инструменты могли его найти, или в каталоге, где установлено все ваше программное обеспечение, иначе это вызовет ошибку (исполняемый файл 'geckodriver' должен быть в PATH)

  • MV geckodriver / usr / bin /

код


from bs4 import BeautifulSoup as BS
from selenium import webdriver


baseurl = "https://www.crunchbase.com/organization/{0}"

query = input('type company name : ').strip().lower()
url = baseurl.format(query)

driver = webdriver.Firefox()
driver.get(url)
html = driver.page_source
soup = BS(html, 'lxml')
acquiredBy = soup.find('div', class_= 'flex-no-grow cb-overflow-ellipsis identifier-label').text


print(acquiredBy)

Вы также можете получить другую информацию, используя ту же логику, просто проверив класс / идентификатор и извлеките информацию.

1 голос
/ 22 марта 2019

Вы можете найти эту информацию на сайте, например, Crunchbase.

Шаги для ее получения следующие:

  1. построить URL-адрес, содержащий информацию для вашей целевой компании,Предположим, вы нашли URL, содержащий нужную вам информацию, например:

    url = 'https://www.example.com/infoaboutmycompany.html'

  2. используйте селен для получения html, так как сайт не позволяет очищатьстраница напрямую.Примерно так:

    from selenium import webdriver from bs4 import BeautifulSoup driver = webdriver.Firefox() driver.get(url) html = driver.page_source

  3. используйте BeautifulSoup, чтобы получить текст из div, содержащий информацию.У него есть определенный класс, который вы можете легко найти по HTML:

    bsobj = BeautifulSoup(html, 'lxml') res = bsobj.find('div', {'class':'alpha beta gamma'}) res.text.strip()

Менее 10 строк кода, чтобы получить его.

Конечно, это работает, изменяя ваш список, от списка URL-адресов до списка компаний, которые мы надеемся рассмотреть на этом сайте.Для маркето это работает.

...