附加列表/ Web抓取的大列表[Python]

时间:2017-05-13 21:34:45

标签: python python-2.7 xpath web-scraping lxml

我对python很新,但在调试时却不那么懒惰;我希望你们中的一些人已经遇到过类似的问题,尽管我还没有在论坛上找到任何东西。

我的项目:

  • 使用Request& amp; Lxml并将我的tree.XPath结果写入列表列表([库存清单,价格清单,时间列表],...)

我的问题:

  • 在一定量的循环(我的函数在一个真正的循环中被调用)之后,将lxml树附加到我的列表列表中

我的怀疑:

  • 列表的最大大小似乎在500.xxx.xxx元素范围内。我有3 * 247 *循环数,它总是在313循环崩溃!所以我接近1.xxx.xxx元素,所以大小不应该是一个问题。但那为什么它总是会在一定数量的循环中崩溃? :(

我的解决尝试:

  • 清空我的列表列表是有效的,但我并不是真的想要我的数据库"被删除

  • 将我的列表列表复制到另一个变量并清空我的第一个变量不起作用。该程序刚刚停止,即使它处于1循环中 只是踩过传递=程序继续进入除外!

我不太了解的事情:

  • 当我没有错误处理程序时,我有一个关于html解析错误的错误报告。为什么解析错误只发生在313个循环?

错误:

File "src/lxml/parser.pxi", line 706,
    in lxml.etree._handleParseResult (src\lxml\lxml.etree.c:106817)
File "src/lxml/parser.pxi", line 644,
    in lxml.etree._raiseParseError (src\lxml\lxml.etree.c:105874)
File "<string>", line 1
    lxml.etree.XMLSyntaxError: line 1: switching encoding: encoder error

我的代码:

from lxml import html
import requests, datetime, time, smtplib

def getkurse(m_kurse):
kurse = [[],[],[]]

url=[]
url.append('http://www.finanzen.net/aktien/Deutschland-Aktien-Realtimekurse')
url.append('http://www.finanzen.net/aktien/Deutschland-Aktien-Realtimekurse@intpagenr_2')
url.append('http://www.finanzen.net/aktien/Deutschland-Aktien-Realtimekurse@intpagenr_3')
url.append('http://www.finanzen.net/aktien/Deutschland-Aktien-Realtimekurse@intpagenr_4')
url.append('http://www.finanzen.net/aktien/Deutschland-Aktien-Realtimekurse@intpagenr_5')
url.append('http://www.finanzen.net/aktien/Deutschland-Aktien-Realtimekurse@intpagenr_6')
url.append('http://www.finanzen.net/aktien/Deutschland-Aktien-Realtimekurse@intpagenr_7')
url.append('http://www.finanzen.net/aktien/Deutschland-Aktien-Realtimekurse@intpagenr_8')
url.append('http://www.finanzen.net/aktien/US-Aktien-Realtimekurse')

for x in range(0,len(url)):
    page = requests.get(url[x])
    page.encoding="utf-8"
    tree = html.fromstring(page.content)
    underlying = tree.xpath('//div[@field="ask"]/text()/parent::*/parent::*//parent::*/td[@class="text-left"]/a[position()=2]/text()')
    ask =tree.xpath('//tr/td/div[@field="ask"]/text()')
    for x in range(0,len(ask)):
        ask[x]=ask[x].replace(",",".")
        kurse[0].append(underlying[x])
        kurse[1].append(ask[x])
        kurse[2].append(datetime.datetime.now().strftime("%H:%M:%S"))
m_kurse.append(kurse)

data = []   

a=datetime.datetime.now()
while 1:
   #try:
   getkurse(data)
   b=datetime.datetime.now()
   l=len(data)-1
   print "Data[]: ", len(data),len(data[0]), len(data[0][0]), "| " "Time expired: ", b-a

   #except:
   #data=[]

我希望有人会看到明显的错误或者可能会认出我的问题。 我通常通过在论坛上查找类似的问题来解决我的问题,但这次我无法进一步了解。非常感谢提前!

0 个答案:

没有答案