Как я могу удалить данные, которые не имеют исходного кода? - PullRequest
0 голосов
/ 05 января 2019

scrap.py

# code to scrap the links from the html

from bs4 import BeautifulSoup
import urllib.request

data = open('scrapFile','r')
html = data.read()
data.close()
soup = BeautifulSoup(html,features="html.parser")
# code to extract links

links = []
for div in soup.find_all('div', {'class':'main-bar z-depth-1'}):

    # print(div.a.get('href'))
    links.append('https://godamwale.com' + str(div.a.get('href')))


print(links)
file = open("links.txt", "w")
for link in links:

    file.write(link + '\n')
    print(link)

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

https://godamwale.com/list/result/591359c0d6b269eecc1d8933

это ссылка здесь. Если кто-то найдет решение, пожалуйста, дайте его мне.

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Итак, основная проблема с сайтом, похоже, заключается в том, что загрузка его занимает много времени, поэтому он возвращал неполный исходный код страницы. Вы должны ждать, пока страница полностью не загрузится. уведомление time.sleep(8) эта строка в коде ниже:

from bs4 import BeautifulSoup
import requests
from selenium import webdriver
import time

CHROMEDRIVER_PATH ="C:\Users\XYZ\Downloads/Chromedriver.exe" 

wd = webdriver.Chrome(CHROMEDRIVER_PATH)

responce = wd.get("https://godamwale.com/list/result/591359c0d6b269eecc1d8933")

time.sleep(8)  # wait untill page loads completely 

soup = BeautifulSoup(wd.page_source, 'lxml')

props_list = []
propvalues_list = []

div = soup.find_all('div', {'class':'row'})
for childtags in div[6].findChildren('div',{'class':'col s12 m4 info-col'}):
    props = childtags.find("span").contents
    props_list.append(props)

    propvalue = childtags.find("p",recursive=True).contents
    propvalues_list.append(propvalue)

print(props_list)
print(propvalues_list)

примечание: код вернет детали конструкции в 2 отдельных списках.

0 голосов
/ 05 января 2019

Используя инструменты разработчика в своем браузере, вы будете замечать, что при посещении этой ссылки появляется запрос на https://godamwale.com/public/warehouse/591359c0d6b269eecc1d8933, который возвращает ответ json, возможно, содержащий данные, которые вы ищете.

Python 2.x:

import urllib2, json
contents = json.loads(urllib2.urlopen("https://godamwale.com/public/warehouse/591359c0d6b269eecc1d8933").read())
print contents

Python 3.x:

import urllib.request, json
contents = json.loads(urllib.request.urlopen("https://godamwale.com/public/warehouse/591359c0d6b269eecc1d8933").read().decode('UTF-8'))
print(contents)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...