Python 列表如何优化 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xingshu1990
V2EX    Python

Python 列表如何优化

  •  
  •   xingshu1990 2021-09-18 14:37:57 +08:00 962 次点击
    这是一个创建于 1559 天前的主题,其中的信息可能已经有所发展或是发生改变。

    职业说明

    非程序员,只是偶尔喜欢折腾 python,编写非函数式代码。

    内容说明

    油漆 -水性金属漆 -金属防腐涂料 -金属型涂料 -车间底漆 -耐高温涂料 -防腐底漆 -水性玻璃漆 -塑胶漆 -调和漆 

    以上为模拟的数据来源。

    下面模拟一下爬虫过程

    创建空列表 word =[]
    爬虫初始关键词是油漆,采集到了[水性金属漆、塑胶漆、调和漆],传入 word 。
    列表内容为 word = ["水性金属漆","塑胶漆","调和漆"]
    然后代码从 word 读取"水性金属漆",再传递给爬虫程序,爬取到[金属防腐涂料、防腐底漆、水性玻璃漆、塑料涂料、调和漆] 再传入 word 。

    我的疑问

    列表因为爬虫程序不断的传关键词进来,代码循环几次后,
    列表不断变大,但是每次爬虫只是从中拿出一个数据,如果不人为进行强制中断,是不是人为制造了一个假 死循环。

    我目前是初步考虑是用.pop 读删列表中的关键词。

    伪代码是:

    words = ['油漆','塑胶漆'] if len(words) == 1: word = words.pop() 执行爬虫函数或者代码 else: for i in range(len(words)-1, -1, -1): word = words.pop(i) 执行爬虫函数或者代码 

    该思路是否可行?
    如不行 是否有更优秀的思路(烦请尽量提供伪代码)

    xingshu1990
        1
    xingshu1990  
    OP
       2021-09-22 09:09:10 +08:00
    再顶一下,看下有没有人回复。
    metamask
        2
    metamask  
       2021-11-12 13:32:13 +08:00
    @xingshu1990 #1

    这种爬虫基本遵循 垂直爬取就好。

    你不用把它剔除掉,而是做一个新的表单,来验证是否已经爬取过,这个方向又走到了布隆过滤器。
    简单做就是,爬过就放到一个列表,爬取前验证是否已经存在过,就不用爬取,
    颗粒度做小的时候,就是验证链接,爬取过的链接不再爬。

    这样子是属于逻辑上的优化,尽量地能够让代码是直观的
    metamask
        3
    metamask  
       2021-11-12 13:35:52 +08:00
    你可以按照这个思路去玩玩看 o 不 ok

    设置两个列表,可以设置状态,pending ,processing ,加多个时

    爬取的时候,就只调用 pending 的出来爬,
    爬取的时候把状态从 pending 改为 processing
    爬取完之后,把 processing 放到新的列表里,作为存留

    再做一个定时器,发现 processing 时间超过 N 但还没完成的,重新调为 pending ,或者做对应相关报错处理
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     884 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 21:24 PVG 05:24 LAX 13:24 JFK 16:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86