小编Roo*_*kie的帖子

Python pandas整数YYYYMMDD到datetime

为此提前道歉,但经过两个小时的搜索和尝试,我无法在这里得到正确的答案.我有一个数据框,通过pandas io sql.read_frame()填充.事实证明对我来说太过分了dtype int64.整数是格式YYYYMMDD.例如20070530- 2007年5月30日.我尝试了一系列方法,最明显的是;

pd.to_datetime(dt['Date'])pd.to_datetime(str(dt['Date']))

功能上有多种变化的不同参数.

结果充其量只是将日期解释为时间.日期设置为1970-01-01- 结果如上例所示1970-01-01 00:00:00.020070530

我也尝试过.map()在simular帖子中找到的各种函数.

我注意到根据np.date_range()可以解释格式的字符串值YYYYMMDD,但这是我最接近看到解决方案.

如果有人有答案,我会非常感激!

编辑:鉴于Ed Chum的答案,问题很可能与编码有关.rep()在dataFrame的子集上产生:

OrdNo LstInvDt \n0
9 20070620 \n1
11 20070830 \n2
19 20070719 \n3
21 20070719 \n4
23 20070719 \n5
26 20070911 \n7
29 20070918 \n8
31 0070816 \n9
34 20070925 \n10

这是LstInvDtdtype int64的时候.

python datetime pandas

23
推荐指数
1
解决办法
4万
查看次数

使用python访问selenium web元素

我确信这已经在某个地方得到了回答,因为这是一个非常基本的问题 - 但是,对于我的生活,我不能在网上找到答案.我觉得自己像一个完全白痴,但我必须这样问,这里是:

我正在编写一个python代码,它将生成一个域上所有页面地址的列表.这是使用selenium 2完成的 - 当我尝试访问由selenium生成的所有链接的列表时,我的问题出现了.

这是我到目前为止所拥有的:

from selenium import webdriver
import time

HovedDomene = 'http://www.example.com'
Listlinker = []
Domenesider = []
Domenesider.append(HovedDomene)

driver = webdriver.Firefox()

for side in Domenesider:        

        driver.get(side)
        time.sleep(10)
        Listlinker = driver.find_elements_by_xpath("//a")

        for link in Listlinker: 

            if link in Domenesider:
              pass
            elif str(HovedDomene) in str(link):
              Domenesider.append(side)

print(Domenesider)
driver.close()
Run Code Online (Sandbox Code Playgroud)

Listlinker变量不包含在网页上找到的链接-而不是列表中包含,(我猜在这里)称为WebElements硒的特定对象.我不能,但是,发现任何WebElement属性,这将使我的链接-因为事实上我无法找到WebElement的任何实例在python属性被访问(至少不会以这样的方式我可以重现)

我非常感谢你们能给我的任何帮助

真诚的新人

python selenium

13
推荐指数
1
解决办法
2万
查看次数

使用Selenium从网页获取所有可见文本

我一整天都在谷歌搜索,没有找到答案,所以如果已经回答,请提前道歉.

我试图从大量不同的网站获取所有可见文本.原因是我想处理文本以最终对网站进行分类.

经过几天的研究,我认为Selenium是我最好的机会.我找到了一种方法来获取所有文本,使用Selenium,遗憾的是同一文本被多次抓取:

from selenium import webdriver
import codecs

filen = codecs.open('outoput.txt', encoding='utf-8', mode='w+')

driver = webdriver.Firefox()

driver.get("http://www.examplepage.com")

allelements = driver.find_elements_by_xpath("//*")

ferdigtxt = []

for i in allelements:

      if i.text in ferdigtxt:
          pass
  else:
         ferdigtxt.append(i.text)
         filen.writelines(i.text)

filen.close()

driver.quit()
Run Code Online (Sandbox Code Playgroud)

if内部条件for环路消除同一文本多次读取的问题的尝试-它不然而,只有某些网页上按计划工作.(它也使脚本变得更慢)

我猜测我的问题的原因是 - 当要求元素的内部文本时 - 我也得到嵌套在相关元素内的元素的内部文本.

有没有办法解决?有没有某种主要元素我抓住内在的文本?或者是一种完全不同的方式,可以让我达到目标?任何帮助都会非常感激,因为我对这一点没有任何想法.

编辑:我使用Selenium而不是Mechanize和Beautiful Soup的原因是因为我想要JavaScript招标文本

python xpath webpage selenium-webdriver

11
推荐指数
2
解决办法
2万
查看次数

是否可以让SQL Server将排序规则转换为UTF-8/UTF-16

在我正在处理的项目中,我的数据存储在SQL Server中,并带有排序规则Danish_Norwegian_CI_AS.数据通过FreeTDS和ODBC输出到python,处理数据为UTF-8.一些字符,如å,ø和æ,没有被正确编码,导致项目进展停滞不前.

我花了几个小时阅读有关令人困惑的编码,校对和代码页的世界,感觉我已经对整个画面有了更好的理解.

我读过的一些文章让我觉得有可能:在SQL select语句中指定,在输出时,校对数据应编码为UTF-8.

我认为这是可能的原因是这篇文章展示了一个如何获得具有不同排序规则的表格以便一起玩的例子.

任何指向将校对转换为UTF-8/UTF-16的方向,都将非常感谢!

编辑:我已经读过,SQL Server提供了一个unicode选项nchar,nvarcharntext,以及其他字符串变量char,varchartext根据set collat​​ion进行编码.我还读到上面提到的unicode选项是用utf-16变体ucs-2编写的(我希望我记得正确).所以; 为了允许locale collat​​ion和unicode表,玩得好,应该有转换函数,不是吗?

sql-server unicode collation utf-8 pyodbc

11
推荐指数
2
解决办法
4万
查看次数

sqlalchemy经典映射关系问题

我的任务是最终学习sqlAlchemy,这样我才能在未来几年中获益.

我对sqlalchemy的文件很感兴趣并且已经过去两天了.我很想学习经典的映射方式,而不是声明性的,bc我想要连接的db存在,并且在它的所有表中都没有唯一的id列.根据这篇文章,经典映射是在这种情况下的方法

我一直在关注sqlalchemy网站上的经典示例,但我似乎无法找到正确的关系配置来实现这一点.

这是我的所有代码:

engine = create_engine(
    "mssql+pyodbc://someaddress/test?driver=FreeTDS?TDS_version=8.0", echo=True)

metadata = MetaData(engine)

class User(object):

    def __repr__(self):
        return "<User(User_id='%s', name='%s', age='%s')>" % (
                            self.user_id, self.name, self.age)
class Email(object):

    def __repr__(self):
        return "<User(email_id='%s', address='%s', user_id='%s')>" % (
                            self.email_id, self.address, self.user_id)

users = Table('users', metadata,
    Column('user_id', Integer, primary_key=True),
    Column('name', String(40)),
    Column('age', Integer),
    schema='test.dbo.users')

mapper(User, users, properties={'Email': relationship(Email, primaryjoin=users.c.user_id==emails.c.user_id)})

emails = Table('emails', metadata,
    Column('email_id', Integer, primary_key=True),
    Column('address', String),
    Column('user_id', Integer, ForeignKey('test.dbo.users.user_id')),
    schema='test.dbo.emails')

mapper(Email, emails)

Session = sessionmaker(bind=engine)
session = Session()

mary = session.query(User, …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

11
推荐指数
1
解决办法
995
查看次数

自定义用户模型错误

我正在尝试在Django中设置我的自定义用户模型.原因是我想使用电子邮件作为用户名,并完全删除用户名字段.我遇到了一个错误,我无法弄明白.

Manager isn't available; User has been swapped for 'app.MyUser'
Exception Location: .../django/db/models/manager.py in __get__, line 256
Python Version: 2.7.3

Python Path:    
[...project specific files,
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索过疯狂,但没有找到太多关于此错误消息的页面.我找到了一些页面,并提出了如何解决它的建议,但没有一个建议对我有用.

我的代码:我已经设置了自定义用户模型.我AUTH_USER_MODEL = 'app.MyUser'在settings.py中声明了自定义用户模型.我还设置了一个自定义UserManager:

class MyUserManager(BaseUserManager):

    def create_user(self, email, password=None):
        """
        Creates and saves a User with the given email. Note that none of the optional fields gets values in the creation. These fields will have to be filled out later on. …
Run Code Online (Sandbox Code Playgroud)

django django-models django-admin django-1.5

7
推荐指数
1
解决办法
6244
查看次数

MS Access 2010查询多次拉出相同的记录,sql挑战

我目前正在开发一个程序来跟踪我公司的库存,使用ms Access 2010.我很难获得用于显示库存的查询,以显示我想要的信息.问题似乎是查询多次拉出相同的记录,使预留和已售产品的总和膨胀.

背景:我公司库存钢筋.我们提议将条形切成碎片.从库存方面来说,我们希望跟踪每个酒吧的长度,从进入仓库的那一刻起,到仓库中的时间(可能会被切成小块),直到整个酒吧出售并消失.

数据库:提出问题的查询,是咨询3个表;

  • Barstock(以下字段)
    • BatchNumber(收到的所有酒吧,相同的生产热量)
    • BarNo(个人酒吧)
    • 原始长度(在库存中收到的条的长度

(BatchNumber和BarNo组合,是主键)

  • 销售

    • ID(主键)
    • BatchNumber
    • 巴诺
    • 已售出数量
  • 预订(卖方可以预留一些材料,当客户表示兴趣,但需要时间来决定)

    • ID(主键)
    • BatchNumber
    • 巴诺
    • 数量保留

我想把这三个表中的信息拉到一个列表中,显示:-Barstock.orginial length As Received - Sales.Quantity已售出已售出 - 已收到 - 按库存出售 - 预订.数量保留为已保留 - 现货 - 保留为可用.

问题是我吮吸sql.我尽最大努力研究了联盟和内心的联系,但我的努力一直都是徒劳的.我通常依靠设计视图来生成我需要的Sql语句.有了设计视图,我想出了以下Sql:

SELECT 
  BarStock.BatchNo
  , BarStock.BarNo
  , First(BarStock.OrgLength) AS Recieved
  , Sum(Sales.QtySold) AS SumAvQtySold
  , [Recieved]-[SumAvQtySold] AS [On Stock]
  , Sum(Reservation.QtyReserved) AS Reserved
  , ([On Stock]-[Reserved])*[Skjemaer]![Inventory]![unitvalg] AS Available
FROM 
  (BarStock 
    INNER JOIN Reservation ON (BarStock.BarNo = Reservation.BarNo) AND (BarStock.BatchNo = Reservation.BatchNo)
  ) 
    INNER JOIN Sales …
Run Code Online (Sandbox Code Playgroud)

sql ms-access

6
推荐指数
1
解决办法
7万
查看次数

解决selenium2打印弹出窗口的问题

我目前正在开发一个程序,在selenium的webdriver和firefox的帮助下,通过域抓取它,在此过程中抓取所有可见文本.(用python编写的程序)

当selenium使用javascript打开页面时,window.print()爬虫正在停止,等待我手动点击出现的弹出窗口中的"关闭".

driver.select_pop_up()在延迟时间之后尝试了这个功能,希望能够在选择窗口后关闭窗口.但是无法选择窗口.

我一直在阅读这个问题,从这个selenium FAQ页面,我几乎得出结论,当我阅读时我必须做一个解决方法:

要解决此问题,您可以使用变通方法(如果存在); 否则您可能必须从自动语料库中排除测试.

我看到的唯一解决方案是不打开包含"打印"一词的链接描述的网页,但我觉得这很难看,并且想听听其他人是否有更好的想法.

显示我的问题示例的代码:

from selenium               import webdriver  
import time

skrivutsiden = 'www.alfkvam.no/index.php?id=4849944&cat=159037&printable=1'
vanligside = 'http://www.google.no'

driver = webdriver.Firefox()

driver.get(vanligside)
driver.get(skrivutsiden)
Run Code Online (Sandbox Code Playgroud)

编辑:

使用prestomanifesto提出的代码,我实际上设法在空的firefox窗口中触发"打印弹出窗口".当代码产生我试图避免的事件时,我认为它首先可能是错误的代码?这是一个错误的结论吗?下面的代码生成了弹出窗口:

from selenium               import webdriver  
import time

driver = webdriver.Firefox()
driver.execute_script("window.print() = function() {}")
Run Code Online (Sandbox Code Playgroud)

重新编辑:

上面的代码触发弹出窗口的原因是因为我得到了错误的javascript - 我写道

"window.print()= function(){}"

代替

"window.print = function(){}"

这并没有解决原始问题,但它解释了第一次编辑中引入的意外弹出窗口.

我道歉前言

重新编辑:

尝试更新解决方案 我找到了这个网站,在那里我看到了以下代码行:

((JavascriptExecutor)m_driver).executeScript("window.confirm = function(msg){return
false;};");
Run Code Online (Sandbox Code Playgroud)

基于此,我尝试了以下无济于事:

driver.execute_script("window.print = function(msg) {return false;};")
Run Code Online (Sandbox Code Playgroud)

javascript python firefox selenium

3
推荐指数
1
解决办法
1954
查看次数

从代码中获取所有href

我正在制作一个网络爬虫.为了在页面中查找链接,我在selenium中使用xpath

driver = webdriver.Firefox()
driver.get(side)
Listlinker = driver.find_elements_by_xpath("//a")
Run Code Online (Sandbox Code Playgroud)

这很好.然而,测试爬虫,我发现并非所有链接都在a标签下.href有时也用在area或div标签中.

现在我被困住了

driver = webdriver.Firefox()
driver.get(side)
Listlinkera = driver.find_elements_by_xpath("//a")
Listlinkerdiv = driver.find_elements_by_xpath("//div")
Listlinkerarea = driver.find_elements_by_xpath("//area")
Run Code Online (Sandbox Code Playgroud)

这真的把爬行放在网络爬虫里.

我尝试过xpath "//@href",但这不起作用.我也尝试了几种方法来获得所有href url的有效方式,使用美丽的汤和lxml,但到目前为止,无济于事.对不起,我没有任何代码可以用美丽的汤和lxml显示我的努力,但由于这些被证明无用,我删除了它们,这不是最聪明的做法,我知道.我现在开始挽救这些不成功的尝试,为了我自己,如果我想再试一次,并想知道第一次出了什么问题

我能得到的任何帮助都将非常感激.

python selenium lxml beautifulsoup web-crawler

1
推荐指数
1
解决办法
4674
查看次数

获取selenium将密钥发送到谷歌的登录框(在python中编码)

我在向Google登录框中的用户名和密码字段发送密钥时遇到问题.Selenium找到id为"Email"和"Passwd"的webelements,但是我无法向他们发送任何密钥.

这是没有产生预期结果的代码:

from selenium               import webdriver
#from selenium.webdriver.common.keys import Keys
import time

username = "test"
password = "ninja"


driver = webdriver.Firefox()
driver.get(u'http://www.google.com')

driver.implicitly_wait(10)

elem = driver.find_element_by_id("gb_70")
elem.click()

username = driver.find_element_by_id('Email')
username.send_keys(username)
Run Code Online (Sandbox Code Playgroud)

此代码生成错误:

回溯(最近一次调用最后一次):文件"SERPkopi.py",第18行,在username.send_keys(用户名)文件"/Users/Sverdrup/virtualenv-1.6.1/Alert/lib/python2.7/site- packages/selenium/webdriver/remote/webelement.py",第142行,在send_keys中local_file = LocalFileDetector.is_local_file(*value)文件"/xxxxx/xxxxxx/virtualenv-1.6.1/Alert/lib/python2.7/site- packages/selenium/webdriver/remote/webelement.py",第253行,在is_local_file中,i在范围内(len(val)):TypeError:'WebElement'类型的对象没有len()

这很奇怪,因为相同的代码可以写入谷歌的'q'(查询)字段

我试图通过id,name,xpath识别webElement无济于事.

背景为什么:

今天我睁大眼睛看谷歌警报,并希望对我公司的客户名称设置警报(这是一个企业对企业的设置,因此客户就是公司本身).客户相对较小,我不认为我会在他们的名字上收到很多警报,但能够跟踪它们会很棒.

看到没有用于谷歌警报的API,我想我会使用selenium以编程方式输入几百个客户名称.我首先必须能够登录我的帐户,但...

我真的很感激所有和任何帮助.

诚挚

javascript python selenium

1
推荐指数
1
解决办法
2439
查看次数