превышение лимита URL после предупреждения scrapy - PullRequest
1 голос
/ 16 мая 2019

Я получил это, когда паук-скрап был готов, и программа записывала данные в файл excel, используя openpyxlxlsxwriter, однако в предупреждении говорится xlsx.writer, что яне используйте, причина этой проблемы в том, что некоторые данные не были записаны и были пропущены.вот код кода:

import scrapy,csv,requests
import re,json
from openpyxl import Workbook
import numpy as np
import pandas as pd
from json.decoder import JSONDecodeError
from openpyxl.utils.dataframe import dataframe_to_rows
#spidercode 
df = pd.DataFrame(spider.list_of_items)
df.to_excel("{}.xlsx".format(file_name))

2019-05-16 10:50:07 [scrapy.core.engine] INFO: Spider closed (finished)
2019-05-16 10:50:15 [py.warnings] WARNING: C:\Users\test\AppData\Local\Programs\Python\Python37-32\lib\site-packages\xlsxwriter\worksheet.py:915:
UserWarning: Ignoring URL 'https://www.target.com/p/nfl-indianapolis-colts-northwest-draft-full-queen-comforter-set/-/A-53033602?ref=tgt_soc_0000059195_pd&afid=pin_ao&cpng=DR_PSA_Sports&fndsrc=bcm&campaignid=626738629371&adgroupid=2680061765888&product_partition_id=2954942580838&device=m&pp=1' 
with link or location/anchor > 255 characters since it exceeds Excel's limit for URLs force_unicode(url))

Я хочу исправить это или написать строку без URL, если это предупреждение хотя бы получит остальную частьстроки.

1 Ответ

1 голос
/ 16 мая 2019

Ваш URL (266 символов): 'https://www.target.com/p/nfl-indianapolis-colts-northwest-draft-full-queen-comforter-set/-/A-53033602?ref=tgt_soc_0000059195_pd&afid=pin_ao&cpng=DR_PSA_Sports&fndsrc=bcm&campaignid=626738629371&adgroupid=2680061765888&product_partition_id=2954942580838&device=m&pp=1'

состоит из 2 частей:

Если данные параметров запроса не имеют практического значения - выможет просто обрезать его от исходного URL и избежать ограничения ссылки в 255 символов:

....
#your spidercode 
for item in spider.list_of_items:
    #url = item[url_index] # if each item is a list or tuple
    #url = item[url] # if each item is a dict
    if "?" in url:
        url = url.split("?")[0]
df = pd.DataFrame(spider.list_of_items)
df.to_excel("{}.xlsx".format(file_name))
...