Я пытаюсь очистить данные от http://corp.sec.state.ma.us/CorpWeb/CorpSearch/CorpSearchResults.aspx Я хочу открыть каждый на странице, чтобы я мог очистить данные компании. Со страницы каждой компании я хочу почистить; Точное название Domesti c Profit Corporation, тип организации, идентификационный номер, дата организации в штате Массачусетс, дата недобровольного расположения, местонахождение главного офиса, имя и адрес зарегистрированного агента, а также должностных лиц и директоров Корпорация. После того, как я собрал данные всех компаний на первой странице, я хочу щелкнуть следующую страницу внизу до go до страницы 2 и повторить тот же процесс. До сих пор я был в состоянии открыть веб-сайт с селеном и искать все компании, которые начинаются с L, я также открыл следующую страницу, но я не могу понять, как собрать данные из таблиц компаний. Я хочу собрать данные из каждой компании и сохранить их в формате CSV. Вот мой код:
import requests, os
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import re
import pandas as pd
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import string
browser = webdriver.Firefox()
#Site url
url = 'http://corp.sec.state.ma.us/corpweb/CorpSearch/CorpSearch.aspx' #starting url
browser.get(url)
userElem = browser.find_element_by_id('MainContent_txtEntityName')
# Looping through all the characters in the alphabet plus numbers 0 - 9
for i in string.ascii_lowercase + string.digits[1:]:
print(i)
userElem.send_keys('l')
linkEleme = browser.find_element_by_id('MainContent_btnSearch')
linkEleme.click()
time.sleep(20)
p = browser.current_url
print('This is the new url: ',(p))
#TODO: Find the href link to each corporation on the page
url2 = p
browser.get(p)
business_elements = browser.find_elements_by_class_name('link')
j = browser.find_element_by_id('MainContent_SearchControl_grdSearchResultsEntity')
links = [link.get_attribute('href') for link in j.find_elements_by_tag_name('a')]
#Finding all the links on the first page
# Find all the links on the page
linkList = browser.find_elements_by_tag_name('a')
correct_links = []
for i in range(len(linkList)):
f = (linkList[i]).get_attribute('href')
if f.startswith('http://corp.sec.state.ma.us'):
correct_links.append(f)
print(len(correct_links))
print('Collecting links on the next pages.....')
for i in range(2, 27):
try:
x_path_element = '//*[@id="MainContent_SearchControl_grdSearchResultsEntity"]/tbody/tr[27]/td/table/tbody/tr/' + 'td' + '['+ str(i) + ']'+ '/a'
print('Going to the page {}.....'.format(i))
browser.find_element_by_xpath(str(x_path_element)).click()
time.sleep(20)
r = browser.current_url
print('This is the new url: ',(r))
#'//*[@id="MainContent_SearchControl_grdSearchResultsEntity"]/tbody/tr[27]/td/table/tbody/tr/td[2]/a'
print('Finding links on the page {}.....'.format(r))
linkList2 = browser.find_elements_by_tag_name('a')
for i in range(len(linkList2)):
f = (linkList2[i]).get_attribute('href')
if f.startswith('http://corp.sec.state.ma.us'):
correct_links.append(f)
for i in correct_links:
# Opening the links that we found in correct_links
print(i)
except:
print('The link is for page {} is dead'.format(i))
print(len((correct_links)))
print('Finding the data about the companies')
print('Preparing a csv file to store data')
with open('Mass_company_data.csv', 'w') as f:
f.write("ID Number, Company Name, Entity Type, Date of Organization in Mass, Address, City, Owner, Owner Address \n")
for i in correct_links:
# Opening the links that we found in correct_links
print(i)
browser.get(i)
# scrape new page data
j = browser.current_url
company_data = browser.find_elements_by_class_name('p1')
Обновление: Мне удалось прокрутить страницу и найти все компании на всех страницах, но я до сих пор не могу понять, как собрать данные со страницы каждой компании