import urllib2
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
url = ("http://www.justdial.com/Mumbai/CA")
driver = webdriver.Firefox()
driver.get(url)
driver
elements = driver.find_elements_by_xpath('//div[@class="col-md-12 col-xs-12 padding0"]')
for e in elements:
print e.text
url = driver.current_url
company_name = driver.find_element_by_xpath('//span[@class="jcn"]').text
contact_number = driver.find_element_by_xpath('//p[@class="contact_info"]').text
address = driver.find_element_by_xpath('//p[@class="adress_info"]').text
address_info = driver.find_element_by_xpath('//p[@class="address-info adinfoex"]').text
estd = driver.find_element_by_xpath('//li[@class="fr"]').text
ratings = driver.find_element_by_xpath('//li[@class="last"]').text
tf = 'textfile.csv'
f2 = open(tf, 'a+')
f2.write(', '.join([data.encode('utf-8') for data in [company_name]]) + ',')
f2.write(', '.join([data.encode('utf-8') for data in [contact_number]]) + ',')
f2.write(', '.join([data.encode('utf-8') for data in [address]]) + ',')
f2.write(', '.join([data.encode('utf-8') for data in [address_info]]) + ',')
f2.write(', '.join([data.encode('utf-8') for data in [estd_ratings]]) + '\n')
f2.close()
0
A
답변
0
다음을 시작해야합니다. 중요한 것은 xpath 항목이 필요한 항목을 정확히 선택하도록하는 것입니다. 당신이 뭔가를 찾고 CSV 파일을 줄 것이다
import csv
import urllib2
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
def get_elements_by_xpath(driver, xpath):
return [entry.text for entry in driver.find_elements_by_xpath(xpath)]
url = ("http://www.justdial.com/Mumbai/CA")
driver = webdriver.Firefox()
driver.get(url)
search_entries = [
("CompanyName", "//span[@class='jcn']"),
("ContactNumber", "//p[@class='contact-info']/span/a"),
("Address", "//span[@class='desk-add jaddt']"),
("AddressInfo", "//p[@class='address-info adinfoex']"),
("Estd", "//li[@class='fr']"),
("Ratings", "//li[@class='last']/a/span[@class='rt_count']")]
with open('textfile.csv', 'wb') as f_output:
csv_output = csv.writer(f_output)
# Write header
csv_output.writerow([name for name, xpath in search_entries])
entries = []
for name, xpath in search_entries:
entries.append(get_elements_by_xpath(driver, xpath))
csv_output.writerows(zip(*entries))
: 파이썬의 csv module
는 자신의 쉼표를 추가 할 필요없이 쉼표로 구분 된 항목에 자동으로 획득 된 목록을 변환 할 수 있습니다
CompanyName,ContactNumber,Address,AddressInfo,Estd,Ratings
Bansal Investment & Consult...,+(91)-22-38578062,Manpada-thane West.. | more..,"CA, Tax Consultants, more...",Estd.in 2003,27 Ratings
G.Kedia & Associates,+(91)-22-38555914,"Station Road, Thane We.. | more..","CA, Company Registration Consultants, more...",Estd.in 2010,17 Ratings
Tarun Shah & Associates,+(91)-22-38552775,"Mogra Lane, Andheri Ea.. | more..","CA, Income Tax Consultants, more...",Estd.in 2000,12 Ratings
Hemant Shah And Associates LLP,+(91)-22-38588696,"Azad Road, Andheri Eas.. | more..","CA, Company Secretary, more...",Estd.in 1988,65 Ratings
루프는 각 xpath를 검색하고 각 검색에 대한 배열 항목을 작성합니다. 각 검색은 일치하는 배열을 반환하므로 항목 배열의 배열로 끝납니다.
그러면 CSV 파일에 기록해야합니다. entries
은 열 순서이며 CSV 파일은 행 순서로 작성해야합니다. 이렇게하려면 행 순서로 변환하는 데 zip(*entries)
이 사용됩니다. 전체 배열의 순서가 올바르므로 writerows
을 한 번 호출하면 전체 파일을 한 번에 쓸 수 있습니다.
파이썬의 CSV 라이브러리를 사용할 때 얻을 수있는 또 다른 이점은 필드에 쉼표가 있으면 필드 주위에 자동으로 따옴표가 추가되어 Excel에서이를 읽지 않아도 다른 열로 해석된다는 것입니다. Excel이로드하고 추측 할 때로드 될 때 기본 셀 유형의 형식을 변경해야 할 것입니다.
관련 문제
- 1. 유니 코드를 출력하는 방법은 무엇입니까?
- 2. 목록 형식으로 목록으로 출력하는 방법은 무엇입니까?
- 3. 스택 오버플로에서 C++ 코드를 출력하는 방법은 무엇입니까?
- 4. 위의 코드를 모두 출력하는 방법은 무엇입니까?
- 5. PHP에서이 HTML 코드를 출력하는 방법은 무엇입니까?
- 6. python jinja template에서 loop.counter를 출력하는 방법은 무엇입니까?
- 7. HTML 표를 Excel 형식으로 내보내는 방법은 무엇입니까?
- 8. webtest에서 Selenium 코드를 실행하는 방법은 무엇입니까?
- 9. 파이썬으로 좋은 형식으로 sqlite 값을 출력하는 방법은 무엇입니까?
- 10. imagemagick을 사용하여 기준 형식으로 이미지를 출력하는 방법은 무엇입니까?
- 11. expected_conditions with Selenium [Python]
- 12. JSF에서 패널로 출력하는 방법은 무엇입니까?
- 13. Python Selenium Script 작업에 Loop을 적용하는 방법은 무엇입니까?
- 14. 전체 데이터베이스 테이블을 Excel 파일로 출력하는 가장 쉬운 방법은 무엇입니까?
- 15. 다른 셀에 결과를 출력하는 방법은 무엇입니까? (VBA Excel 2007)
- 16. 결과를 출력하는 방법은 무엇입니까?
- 17. Salesforce에서 출력하는 방법은 무엇입니까?
- 18. cgridview에서 csv로 출력하는 방법은 무엇입니까?
- 19. 직사각형을 출력하는 Python 스크립트
- 20. graphviz 형식으로 파이썬 코드를 변환하는 방법
- 21. 파이썬에서 계산을 출력하는 방법은 무엇입니까?
- 22. Yardoc을 STDOUT으로 출력하는 방법은 무엇입니까?
- 23. Selenium 2.0 + Thucydides + Excel
- 24. 이것을 화면에 출력하는 방법은 무엇입니까?
- 25. 코드를 실행하는 동안 Mathematica가 콘솔 경고 메시지를 출력하는 방법은 무엇입니까?
- 26. 여러 줄의 HTML 코드를 반향 출력하는 방법은 무엇입니까?
- 27. elisp 바이트 코드를 사용자 정의 디렉토리로 출력하는 방법은 무엇입니까?
- 28. Python 3에서 실제 JSON 피드를 출력하는 방법은 무엇입니까?
- 29. python 3 버전에서이 코드를 사용하는 방법은 무엇입니까?
- 30. Python 코드를 YAML에 임베드하는 방법은 무엇입니까?