【发布时间】:2018-02-06 18:27:18
【问题描述】:
我正在尝试使用 beautifulsoup 抓取网站。我在很大程度上是成功的,但有两个问题
从网站获取数据后,我将它们打印到屏幕上以及 将它们写入 CSV 文件。网站上有一个价格字段 实际金额中的卢比符号(价格样本结构 字段:₹10000)。当我将金额打印到控制台时,它打印得很好 没有问题。当我尝试将其写入 excel 工作表时,出现错误 “Unicodeencoeerror”编解码器“charmap”无法编码字符“\u20b9” 位置 28. 我正在将其他字段打印到控制台并显示问题 最多只有两个字段,一个带有货币符号,另一个带有 * 符号
-
我有一个循环运行以从网页中获取特定页面的所有页面 搜索。搜索结果大约是 344 页,但循环在大约页面处停止 43,只有 HTML 错误 500 作为错误消息
import bs4 from urllib.request import urlopen as uReq from bs4 import BeautifulSoup as Soup filename = "data.csv" f = open(filename,"w") headers = "phone_name, phone_price, phone_rating,number_of_ratings, memory, display, camera, battery, processor, Warrenty, security, OS\n" f.write(headers) for i in range(2): # Number of pages minus one my_url = 'https://www.flipkart.com/search?as=off&as- show=on&otracker=start&page= {}&q=cell+phones&viewType=list'.format(i+1) print(my_url) uClient=uReq(my_url) page_html=uClient.read() page_soup = Soup(page_html,"html.parser") containers=page_soup.findAll("a", {"class":"_1UoZlX"}) for container in containers: phone_name = container.find("div",{"class":"_3wU53n"}).text try: phone_price = container.find("div",{"class":"_1vC4OE _2rQ-NK"}).text except: phone_price = 'No Data'
非常感谢您提供的所有帮助!
【问题讨论】:
-
欢迎来到 Stack Overflow!如果您在调试某些内容及其预期行为方面需要帮助,请务必发布相关代码。代码可以帮助解决问题 1。对于第二个问题,显然您的抓取速度太快,服务器开始通过抛出该错误来限制您。尝试在每个页面后添加几秒钟的延迟。
-
谢谢..添加代码
-
如果您使用的是 Python 2.6-2.7,您可能需要
io.open允许指定编码(在本例中为 unicode):stackoverflow.com/a/35086151/2464424
标签: python unicode encoding web-scraping decoding