Можно ли очистить атрибут внутри промежутка? - PullRequest
0 голосов
/ 07 февраля 2019

Итак, я хочу почистить несколько телефонных номеров с сайта.Единственная проблема в том, что они скрыты за кликом.Я не могу пойти и щелкнуть все из них, чтобы сделать их доступными для обработки, поэтому я хотел спросить, есть ли способ получить их из атрибута «data-phone» внутри тега span.

Я пыталсяиспользовать данные _ = 'data-phone', но это не работает.

from bs4 import BeautifulSoup
import requests
import csv

source = requests.get('https://software-overzicht.nl/amersfoort?page=1').text

soup = BeautifulSoup(source, 'lxml')

csv_file = open('cms_scrape.csv', 'w')

csv_writer = csv.writer(csv_file)
csv_writer.writerow(['title, location'])

for number in soup.find_all('span', data_='data-phone'):
    print(number)

for info in soup.find_all('div', class_='company-info-top'):
    title = info.a.text
    location = info.p.text

    csv_writer.writerow([title, location])

csv_file.close()

1 Ответ

0 голосов
/ 07 февраля 2019

изменить

for number in soup.find_all('span', data_='data-phone'):
    print(number)

на

for number in soup.find_all('span', class_='phone'):
    print(number['data-phone'])

Вывод:

0334226800
0878739737
0334558584
0334798200
0334720311
0334677050
0334554948
0334535384
0337767840
0334560292
0626214363
0334559065
0334506506
0620423525
0334556166
0332012581
0334557485
0334946111
0334536200
0334545111
0334545430
0337851805
033-4721544
06-26662490

Чтобы включить это в CSV:

from bs4 import BeautifulSoup
import requests
import csv

with open('C:/cms_scrape.csv','w', newline='') as f:
    csv_writter = csv.writer(f)
    csv_writter.writerow(['naambedrijf', 'adress', 'phone'])

    for page in range(1, 22):
        url = 'https://software-overzicht.nl/amersfoort?page={}'.format(page)
        source = requests.get(url).text
        soup = BeautifulSoup(source, 'lxml')

        for search in soup.find_all('div', class_='company-info-top'):
            title = search.a.text.strip()
            adress = search.p.text.strip()

            try:
                phone = search.find('span', {'class':'phone'})['data-phone']
            except:
                phone = 'N/A'

            print(title)
            csv_writter.writerow([title,adress,phone])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...