scrapy 警告后超过 URL 限制
exceeding URL limit after scrapy warning
我在 scrapy spider 完成后得到了这个,程序正在使用 openpyxl
[=14= 将数据写入 excel 文件],然而,在警告中它说 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 的情况下写入该行的方法,如果此警告碰巧至少得到该行的其余部分。
你的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'
由两部分组成:
- 实际url(101 个符号):
https://www.target.com/p/nfl-indianapolis-colts-northwest-draft-full-queen-comforter-set/-/A-53033602
- 它是查询参数(在 url 中的
?
符号之后):
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
如果查询参数数据没有任何实际价值 - 您可以简单地将其从原始 url 中删除并避免 excel 255 个符号 link 限制:
....
#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))
我在 scrapy spider 完成后得到了这个,程序正在使用 [=14= 将数据写入 excel 文件],然而,在警告中它说 openpyxl
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 的情况下写入该行的方法,如果此警告碰巧至少得到该行的其余部分。
你的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'
由两部分组成:
- 实际url(101 个符号):
https://www.target.com/p/nfl-indianapolis-colts-northwest-draft-full-queen-comforter-set/-/A-53033602
- 它是查询参数(在 url 中的
?
符号之后):
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
如果查询参数数据没有任何实际价值 - 您可以简单地将其从原始 url 中删除并避免 excel 255 个符号 link 限制:
....
#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))