小编add*_*ons的帖子

BeautifulSoup:提取img alt数据

我有以下图像html,我试图解析在alt中的信息.目前我能够成功提取图像.

html(我目前解析的内容

<img class="rslp-p" alt="Sony Cyber-shot DSC-W570 16.1 MP Digital Camera - Silver" src="http://i.ebayimg.com/00/$(KGrHqZ,!j!E5dyh0jTpBO(3yE7Wg!~~_26.JPG?set_id=89040003C1" itemprop="image" />
Run Code Online (Sandbox Code Playgroud)

我从我解析的内容构造图像名称:

现行守则

def main(url, output_folder="~/images"):
         """Download the images at url"""
         soup = bs(urlopen(url))
         parsed = list(urlparse.urlparse(url))
         count = 0
         for image in soup.findAll("img"):
             print image
             count += 1
             print count
             print "Image: %(src)s" % image
             image_url = urlparse.urljoin(url, image['src'])
             filename = image["src"].split("/")[-1].split("?")[0].replace("$",'').replace(".JPG",".jpg").replace("~~_26",str(count)).lstrip("(")
             parsed[2] = image["src"]
             outpath = os.path.join(output_folder, filename)
             urlretrieve(image_url, outpath)
Run Code Online (Sandbox Code Playgroud)

我想做的是提取是

alt="Sony Cyber-shot DSC-W570 16.1 MP Digital Camera - Silver"
Run Code Online (Sandbox Code Playgroud)

我也想在提取图像时使用alt数据作为文件名.

html python beautifulsoup scrape

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

使用lxml和xpath解析Html

我正在尝试使用python的lxml,因为在阅读并做谷歌推荐是使用lxml而不是其他解析包.我有以下dom结构,我管理写正确的xpath我仔细检查xpath检查我的xpath以确认它的有效性.Xpath在Xpath Checker上运行正常但是当我在python中使用lxml时,我没有得到结果infract我得到的是对象而不是实际的文本.

这是我的dom结构:

<div class="pdsc-l">
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<tr>
<tr>
<tr>
<tr>
<tr>
<td width="35%" valign="top">
<font size="2" face="Arial, Helvetica, sans-serif">Brand</font>
</td>
<td width="65%" valign="top">
<font size="2" face="Arial, Helvetica, sans-serif">HTC</font>
</td>
</tr>
<tr>
<td width="35%" valign="top">
<td width="65%" valign="top">
Run Code Online (Sandbox Code Playgroud)

我写的xpath后给了我想要的东西..

//td//font[text()='Brand']/following::td[1]
Run Code Online (Sandbox Code Playgroud)

但是使用lxml我得到的结果是:

This is my code:
    rawPage = urllib2.urlopen(request)
    read = rawPage.read()
    #print read
    tree = etree.HTML(read)    
    for tr in tree.xpath("//tr"):
        print tr.xpath("//td//font[text()='Brand']/following::td[1]")
Run Code Online (Sandbox Code Playgroud)

这是输出

[<Element td at 0x10ad80b90>]
[<Element td at 0x10ad80b90>]
[<Element td at 0x10ad80b90>] …
Run Code Online (Sandbox Code Playgroud)

python xpath lxml html-parsing

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

MATLAB:10倍交叉验证,不使用现有功能

我有一个矩阵(我想在MatLab中你称之为结构)或数据结构:

  data: [150x4 double]
labels: [150x1 double]
Run Code Online (Sandbox Code Playgroud)

这是我的matrix.data看起来像假设我用矩阵的名称加载我的文件:

5.1000    3.5000    1.4000    0.2000
4.9000    3.0000    1.4000    0.2000
4.7000    3.2000    1.3000    0.2000
4.6000    3.1000    1.5000    0.2000
5.0000    3.6000    1.4000    0.2000
5.4000    3.9000    1.7000    0.4000
4.6000    3.4000    1.4000    0.3000
5.0000    3.4000    1.5000    0.2000
4.4000    2.9000    1.4000    0.2000
4.9000    3.1000    1.5000    0.1000
5.4000    3.7000    1.5000    0.2000
4.8000    3.4000    1.6000    0.2000
4.8000    3.0000    1.4000    0.1000
4.3000    3.0000    1.1000    0.1000
5.8000    4.0000    1.2000    0.2000
5.7000    4.4000    1.5000    0.4000
5.4000    3.9000    1.3000    0.4000
5.1000    3.5000    1.4000    0.3000 …
Run Code Online (Sandbox Code Playgroud)

matlab machine-learning cross-validation

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

Scrapy:无法创建项目

我在安装scrapy方面遇到了问题lxml但后来我在stackoverflow上找到了一些信息.根据这些信息,我做了sudo easy_install lxml一些错误,我认为scrapy得到了安装:

我得出那个判断的原因是我击退了我可以做的事情:

Python 2.7.5 (default, Jul 28 2013, 07:27:04) 
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from scrapy import *
>>> 
Run Code Online (Sandbox Code Playgroud)

但是当我尝试做scrapy教程时,我得到以下错误:

$ scrapy startproject tutorial
Traceback (most recent call last):
  File "/usr/local/bin/scrapy", line 4, in <module>
    import pkg_resources
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2603, in <module>
    working_set.require(__requires__)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 666, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 565, in …
Run Code Online (Sandbox Code Playgroud)

python lxml scrapy osx-mountain-lion

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

无法使用VirtualEnv在OSX 10.8.4上安装matplotlib

我尝试了网络上可用的每个链接,但我仍然收到以下错误:

Edit setup.cfg to change the build options

BUILDING MATPLOTLIB
            matplotlib: yes [1.4.x]
                python: yes [2.7.5 (default, Jul 28 2013, 07:27:04)  [GCC
                        4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)]]
              platform: yes [darwin]

REQUIRED DEPENDENCIES AND EXTENSIONS
                 numpy: yes [version 1.7.1]
              dateutil: yes [dateutil was not found. It is required for date
                        axis support. pip/easy_install may attempt to
                        install it after matplotlib.]
               tornado: yes [tornado was not found. It is required for the
                        WebAgg backend. pip/easy_install may attempt to
                        install it after …
Run Code Online (Sandbox Code Playgroud)

python matplotlib virtualenv osx-mountain-lion

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

Beautifulsoup获得跨度内容

我已经解析了html页面:使用beautifulsoup

user_page = urllib2.urlopen(user_url)
souping_page = bs(user_page)
badges = souping_page.body.find('div', attrs={'class': 'badges'})
Run Code Online (Sandbox Code Playgroud)

在此之后我的badges对象看起来像这样:

<span><span title="9 gold badges"><span class="badge1"></span><span class="badgecount">9</span></span><span title="38 silver badges"><span class="badge2"></span><span class="badgecount">38</span></span><span title="56 bronze badges"><span class="badge3"></span><span class="badgecount">56</span></span></span>
Run Code Online (Sandbox Code Playgroud)

现在我想提取示例9 gold badges,38 silver badges从此我尝试使用,badges.span.span但这不起作用.

html python beautifulsoup html-parsing

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

postgres备份脚本不是postgres用户

我想创建一个postgres备份脚本,但我不想使用postgres用户,因为我所使用的unix系统几乎没有限制.我想要做的是在crontab上以unix系统(网络)的常规用户身份运行此脚本,并在脚本中使用数据库管理员帐户.

为了在unix系统(网络)中明确我有用户foo,现在我们有postgres默认postgres用户的用户,然后对于数据库我们有一个数据库管理员用户my_db_admin.我编写脚本以foo使用my_db_admin脚本中的用户和凭据作为网络用户执行.

这是我开始的,但问题是当我执行脚本时它会给出一个错误,说没有提供密码.

#!/bin/bash
export PASSWORD="MyPassword"
backup_dir="/BACKUP/LOCATION"
# name of the backup file has the date
backup_date=`date +%d-%m-%Y`
# only keep the backup for 30 days (maintain low storage)
number_of_days=30
pg_dump -Fc -Umy_db_admin MyDatabase -w > $backup_dir\_$backup_date
find $backup_dir -type f -prune -mtime +$number_of_days -exec rm -f {} \;
Run Code Online (Sandbox Code Playgroud)

这是错误:

pg_dump: [archiver (db)] connection to database "MyDatabase" failed: fe_sendauth: no password supplied
Run Code Online (Sandbox Code Playgroud)

postgresql shell pg-dump

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

从选择语句更新查询仅在字段为空时更新

我试图写一条sql语句从另一个表列更新一个表的列。但是我只想更新该列为空。

例如:

UPDATE
    Table
SET
    Table.col1 = other_table.col1,
FROM
    Table
INNER JOIN
    other_table
ON
    Table.id = other_table.id
Run Code Online (Sandbox Code Playgroud)

但是我只想设置Table.col1值为空。最好的方法是什么?

sql sql-update

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

scala-spark:如何在groupby之后过滤RDD

我已经开始使用具有管道分隔字符串的RDD.我已处理数据并采用以下格式:

((0001F46468,239394055),(7665710590658745,-414963169),0,1420276980302)
((0001F46468,239394055),(8016905020647641,183812619),1,1420347885727)
((0001F46468,239394055),(6633110906332136,294201185),1,1420398323110)
((0001F46468,239394055),(6633110906332136,294201185),0,1420451687525)
((0001F46468,239394055),(7722056727387069,1396896294),1,1420537469065)
((0001F46468,239394055),(7722056727387069,1396896294),1,1420623297340)
((0001F46468,239394055),(8045651092287275,-4814845),1,1420720722185)
((0001F46468,239394055),(5170029699836178,-1332814297),0,1420750531018)
((0001F46468,239394055),(7722056727387069,1396896294),0,1420807545137)
((0001F46468,239394055),(4784119468604853,1287554938),1,1421050087824) 
Run Code Online (Sandbox Code Playgroud)

只是为了对数据描述给出高级别的观点.您可以将主元组中的第一个元素(第一个元组)视为用户标识,将第二个元组视为产品标识,第三个元素是用户对产品的偏好.(为了将来的参考,我将上面的数据集标记为val userData)

我的目标是,如果用户已经为产品投放了正(1)和负(0)偏好,则只记录正数.例如:

((0001F46468,239394055),(6633110906332136,294201185),1,1420398323110)
((0001F46468,239394055),(6633110906332136,294201185),0,1420451687525)
Run Code Online (Sandbox Code Playgroud)

我只想保留

((0001F46468,239394055),(6633110906332136,294201185),1,1420398323110) 
Run Code Online (Sandbox Code Playgroud)

所以我按用户产品元组对用户进行了分组 (0001F46468,239394055),(6633110906332136,294201185

val groupedFiltered = userData.groupBy(x => (x._1, x._2)).map(u => {
      for(k <- u._2) {
        if(k._3 > 0)
          u
      }
    })
Run Code Online (Sandbox Code Playgroud)

但那返回空元组.

所以我采取了以下方法:

val groupedFiltered = userData. groupBy(x => (x._1, x._2)).flatMap(u => u._2).filter(m => m._3 > 0)

((47734739656882457,-1782798434),(7585453414177905,-461779195),1,1422013413082)
((47734739656882457,-1782798434),(7585453414177905,-461779195),1,1422533237758)
((55218449094787901,-1374432022),(6227831620534109,1195766703),1,1420410603596)
((71212122719822610,-807015489),(6769904840922490,1642054117),1,1422549467554)
((75414197560031509,1830213715),(6724015489416254,-1389654186),1,1420196951100)
((60422797294995441,734266951),(6335216393920738,1528026712),1,1421161253600)
((35091051395844216,451349158),(8135854751464083,-1751839326),1,1422083101033)
((16647193023519619,990937787),(5384884550662007,-910998857),1,1420659873572)
((43355867025936022,-945669937),(7336240855866885,518993644),1,1420880078266)
((12188366927481231,-2007889717),(5336507724485344,363519858),1,1420827788022)
Run Code Online (Sandbox Code Playgroud)

这很有希望,但看起来它所有的记录都是零,如果用户对同一项目只有1和0,我只想要保持1为1.

scala apache-spark

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

Pandas:根据另一个数据框中的值在数据框中添加新列

我有两个数据框,一个包含用户 ID 和性别,另一个数据框包含这些用户的在线活动。

第一个数据帧 (df1)

userId, gender
001, F
002, M
003, F
004, M
005, M
006, M
Run Code Online (Sandbox Code Playgroud)

第二个数据框 (df2)

userId, itemClicked, ItemBought, date
001, 123182, 123212, 02/02/2016
003, 234256, 123182, 05/02/2016
005, 986834, 234256, 04/19/2016
004, 787663, 787663, 05/12/2016
020, 465738, 465738, 03/20/2016
004, 787223, 787663, 07/12/2016
Run Code Online (Sandbox Code Playgroud)

我想通过根据 userId 查找第一个数据框来将性别列添加到第二个数据框。df2 每个用户可能有多行,因为它是一个点击数据,其中同一用户可能点击了多个项目。

这在 MySql 中很容易做到,但我正在努力想办法在 Pandas 中做到这一点。

for index, row in df2.iterrows():
    user_id = row['userId']
    if user_id in df1['userId']:
        t = df1.loc[df1['userId'] == user_id]
        pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

这是熊猫的方式来完成这样的任务吗?

python dataframe pandas

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