当在工作表中抓取2个以上的单元格时,Python Scraper会创建ValueError错误

时间:2017-10-28 02:02:17

标签: python web-scraping

编辑1 我发现错误似乎发生在哪里,但不确定导致中断的原因。

来自单元格1的文本= 1 2 FUGE ST HIGHETT VIC 3190 返回 https://www.realestate.com.au/property-unit-vic-highett-126564142

来自格格2的文本= 1 18 FERNCROFT AVE MALVERN EAST VIC 3145

导致代码中断。这两个条目的唯一区别是,第二个条目有8个字符串而不是7个,我在大范围的地址中测试了它,如果它有7个工作,如果它有8个 - 它失败了。任何人都可以在下面的代码中看到什么会导致字符串计数导致这样的错误?有没有办法添加例外?现在让我把头发拉了出来。

结束编辑1

运行刮刀时会发生一个奇怪的错误,刮刀会从Excel工作表中抓取3条记录,但3行以上的任何错误都会出错。它有点令人头疼,因为我已经尝试将2个单元格中的数据更改为不同的URL并且它始终相同 - 如果有2个单元格或更少,它将成功地刮擦和关闭 - 如果有2个以上的行 - 它将在第3个单元格上停止,并出现以下错误

File "C:\Python27\projects\REA_UN\REA_UNIQUEID\2.py", line 32, in <module>
  (Unique_ID,) = (x for x in tree.xpath('//a[@class="property-value__link--
   muted rui-button-brand property-value__btn-listing"]/@href'))
ValueError: need more than 0 values to unpack

我尝试了以下内容:

- 检查20个不同的网址,以查看来源

中是否有变量

- 逐行重建代码以查看是否有任何故障

- 删除了Panda修饰符并直接从阅读

开始

没有任何效果,并且经常会抛出相同的错误 - 这让我相信它是如何读取列表本身的,但不是100%肯定....

出于测试目的,这是excel表中的内容

1 10 OAK ST PASCOE VALE VIC 3044
1 1149 NEPEAN HWY HIGHETT VIC 3190
1 10 OAK ST PASCOE VALE VIC 3044
1 1149 NEPEAN HWY HIGHETT VIC 3190
1 10 OAK ST PASCOE VALE VIC 3044
1 1149 NEPEAN HWY HIGHETT VIC 3190

哪个应该返回

http://www.realestate.com.au/property-townhouse-vic-highett-126589490
http://www.realestate.com.au/property-house-vic-malvern-126575878
http://www.realestate.com.au/property-townhouse-vic-highett-126589490
http://www.realestate.com.au/property-house-vic-malvern-126575878
http://www.realestate.com.au/property-townhouse-vic-highett-126589490
http://www.realestate.com.au/property-house-vic-malvern-126575878

如果表单中有2个单元格或更少单元格,它将如何仅返回前2个

以下完整代码:

import requests
import csv
import datetime
import pandas as pd
import csv
from lxml import html

df = pd.read_excel("C:\Python27\Projects\REA_UNIQUE_ID\\Conversion_List.xlsx", sheetname="DNC")
dnc = df['Property']
dnc_list = list(dnc)
url_base = "https://www.realestate.com.au/property/"
URL_LIST = []

for nd in dnc_list:
    nd = nd.strip()
    nd = nd.lower()
    nd = nd.replace(" ", "-")
    URL_LIST.append(url_base + nd)

text2search = '''The information provided'''

with open('REA_ID.csv', 'wb') as csv_file:
    writer = csv.writer(csv_file)

    for index, url in enumerate(URL_LIST):
        page = requests.get(url)
        print '\r' 'Scraping URL ' + str(index+1) +   ' of  ' + str(len(URL_LIST)),

        if text2search in page.text:
            tree = html.fromstring(page.content)
            (title,) = (x.text_content() for x in tree.xpath('//title'))
            (Unique_ID,) = (x for x in tree.xpath('//a[@class="property-value__link--muted rui-button-brand property-value__btn-listing"]/@href'))
            writer.writerow([title, Unique_ID])

任何想法/帮助都会受到赞赏,因为它很奇怪!

0 个答案:

没有答案