मेरे पास एक पर्यटक साइट से समीक्षाओं को स्क्रैप करने और एक्सेल फ़ाइल में स्टोर करने की एक सरल परियोजना है। समीक्षा स्पेनिश, जापानी या किसी अन्य भाषा में हो सकती है, समीक्षाओं में कभी-कभी "❤❤" जैसे विशेष प्रतीक होते हैं।गैर-अंग्रेज़ी स्ट्रिंग को एक्सेल फ़ाइल में कैसे संग्रहीत करें, python3?
मुझे सभी डेटा स्टोर करने की आवश्यकता है (यदि विशेष रूप से लिखा नहीं जा सकता है तो विशेष प्रतीकों को बाहर रखा जा सकता है)।
मैं डेटा मैं चाहता स्क्रैप और कंसोल में इसे प्रिंट के रूप में यह (जापानी पाठ की तरह) है, लेकिन समस्या यह csv फ़ाइल में भंडारण के साथ है करने में सक्षम हूँ, यह के रूप में
नीचे दिखाया गया त्रुटि संदेश दिखा हैमैंने यूटीएफ -8 एन्कोडिंग के साथ फ़ाइल खोलने का प्रयास किया (जैसा कि नीचे टिप्पणी में उल्लिखित है) लेकिन फिर यह कुछ अजीब प्रतीकों में डेटा सहेजता है जो नहीं समझता .... और समस्या का उत्तर नहीं मिला। कोई सुझाव।
मैं अजगर के लिए अजगर 3.5.3
मेरे कोड का उपयोग कर रहा:
from selenium import webdriver
from bs4 import BeautifulSoup
import time
import re
file = "TajMahalSpanish.csv"
f = open(file, "w")
headers = "rating, title, review\n"
f.write(headers)
pages = 119
pageNumber = 2
option = webdriver.ChromeOptions()
option.add_argument("--incognito")
browser = webdriver.Chrome(executable_path='C:\Program Files\JetBrains\PyCharm Community Edition 2017.1.5\chrome webdriver\chromedriver', chrome_options=option)
browser.get("https://www.tripadvisor.in/Attraction_Review-g297683-d317329-Reviews-Taj_Mahal-Agra_Agra_District_Uttar_Pradesh.html")
time.sleep(10)
browser.find_element_by_xpath('//*[@id="taplc_location_review_filter_controls_0_form"]/div[4]/ul/li[5]/a').click()
time.sleep(5)
browser.find_element_by_xpath('//*[@id="BODY_BLOCK_JQUERY_REFLOW"]/span/div[1]/div/form/ul/li[2]/label').click()
time.sleep(5)
while (pages):
html = browser.page_source
soup = BeautifulSoup(html, "html.parser")
containers = soup.find_all("div",{"class":"innerBubble"})
showMore = soup.find("span", {"onclick": "widgetEvCall('handlers.clickExpand',event,this);"})
if showMore:
browser.find_element_by_xpath("//span[@onclick=\"widgetEvCall('handlers.clickExpand',event,this);\"]").click()
time.sleep(3)
html = browser.page_source
soup = BeautifulSoup(html, "html.parser")
containers = soup.find_all("div", {"class": "innerBubble"})
showMore = False
for container in containers:
bubble = container.div.div.span["class"][1]
title = container.div.find("div", {"class": "quote"}).a.span.text
review = container.find("p", {"class": "partial_entry"}).text
f.write(bubble + "," + title.replace(",", "|").replace("\n", "...") + "," + review.replace(",", "|").replace("\n", "...") + "\n")
print(bubble)
print(title)
print(review)
browser.find_element_by_xpath("//div[@class='ppr_rup ppr_priv_location_reviews_list']//div[@class='pageNumbers']/span[@data-page-number='" + str(pageNumber) + "']").click()
time.sleep(5)
pages -= 1
pageNumber += 1
f.close()
मैं निम्न त्रुटि हो रही है:
Traceback (most recent call last):
File "C:/Users/Akshit/Documents/pycharmProjects/spanish.py", line 45, in <module>
f.write(bubble + "," + title.replace(",", "|").replace("\n", "...") + "," + review.replace(",", "|").replace("\n", "...") + "\n")
File "C:\Users\Akshit\AppData\Local\Programs\Python\Python35\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 10-18: character maps to <undefined>
Process finished with exit code 1
अद्यतन
मैं इस समस्या के लिए एक समाधान की कोशिश कर रहा हूँ। अंत में मुझे जापानी समीक्षाओं को अंग्रेजी के साथ-साथ शोध के लिए अनुवाद करने की आवश्यकता है, इसलिए हो सकता है कि मैं इसे लिखने से पहले कोड में स्ट्रिंग को ट्रांस्लेट करने के लिए Google एपीआई में से एक का उपयोग कर सकूं और फिर इसे सीएसवी फ़ाइल में लिख सकूं .. ..
(, फ़ाइल, "डब्ल्यू" एन्कोडिंग = 'utf-8') की कोशिश 'च = खुला'। एक साइड-नोट पर, संदर्भ प्रबंधक के साथ फाइलें खोलना रोबस्टर है, और मैं प्रोग्राम के विभिन्न हिस्सों को अलग-अलग कार्यों में अलग करता हूं (सामग्री प्राप्त करना, सामग्री को स्क्रैप करना, परिणामों को लिखना) –
संभावित डुप्लिकेट [हैंडलिंग गैर- पाइथन का उपयोग करते हुए एक सीएसवी में मानक अमेरिकी अंग्रेजी वर्ण और प्रतीक] (https://stackoverflow.com/questions/12357261/handling-non- मानक- अमेरिकन- अंग्रेजी-characters-and-symbols-in-a-csv-using- पीई) – JeffC
@ मार्टिनफैब्रे जो त्रुटि को हटा देता है लेकिन वास्तव में यह फ़ाइल में एक ही चीज़ को प्रिंट नहीं कर रहा है .... उदाहरण के लिए इसे प्रिंट चाहिए ** "美 し い 幾何学 模 様!" ** बल्कि यह प्रिंट है ** "美ã-ए" å¹¾ä½ • å|模æ§~ï¼ "** –