Очистка URL-адресов на веб-странице с помощью BeautifulSoup - PullRequest
1 голос
/ 27 января 2020

Ниже приведен код для очистки этой веб-страницы . Из всех URL-адресов на странице мне нужны только те, которые содержат дополнительную информацию о вакансиях, например, URL-адреса таких компаний, как - «Abbot», «Abbv ie», «Affymetrix» и т. Д. .

import requests
import pandas as pd
import re
from lxml import html
from bs4 import BeautifulSoup
from selenium import webdriver
list = ['#medical-device','#engineering','#recruitment','#job','#linkedin']
page = "https://dpseng.com.sg/definitive-singapore-pharma-job-website-directory/"
list_of_pages = [page + x for x in list]
for info in list_of_pages:
    pages= requests.get(info)
    soup = BeautifulSoup(pages.content, 'html.parser')
    tags = [div.p for div in soup.find_all('div', attrs ={'class':'fusion-text'})]
    for m in tags:
        try:
            links = [link['href'] for link in tags]
        except KeyError:
            pass
        print(links)

Вывод, который я получаю, представляет собой пустой список, как показано ниже:

[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]

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

Спасибо !!

Ответы [ 2 ]

1 голос
/ 27 января 2020

Возможно, попробуйте что-то вроде

import requests
from bs4 import BeautifulSoup
list = ['#medical-device','#engineering','#recruitment','#job','#linkedin']
page = "https://dpseng.com.sg/definitive-singapore-pharma-job-website-directory/"
list_of_pages = [page + x for x in list]
for info in list_of_pages:
    pages= requests.get(info)
    soup = BeautifulSoup(pages.content, 'html.parser')
    tags = [div.p for div in soup.find_all('div', attrs ={'class':'fusion-text'})]

    links = []
    for p in tags:
        links.extend([a['href'] for a in p.find_all('a')])

    print(links)
1 голос
/ 27 января 2020

Что я заметил, так это то, что веб-страницы с якорями на самом деле не изолируют HTML, который вам действительно нужен. Таким образом, вы захватываете все экземпляры <div class='fusion-text'>.

. В следующем примере кода будут получены все нужные вам URL:

import requests
from bs4 import BeautifulSoup

# Get webpage 
page = "https://dpseng.com.sg/definitive-singapore-pharma-job-website-directory/"
soup= BeautifulSoup(requests.get(page).content, 'html.parser')
# Grab all URLs under each section
for section in ['medical-device','engineering','recruitment','job','linkedin']:
    subsection = soup.find('div', attrs ={'id': section})
    links = [a['href'] for a in subsection.find_all('a')]
    print("{}: {}".format(section, links))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...