您的位置:

python爬虫中的难题(python中遇到的困难)

本文目录一览:

python 爬虫遇到的一个小问题

这个应该是加载页面验证的问题,也就是实际上页面已经加载完了,但验证认为没有加载完,一直在加载。

我用selenium的get(url)也会有这种问题,处理方法是自定义超时时间,然后重新连接,相当于我们用浏览器访问,网页加载一半卡住,按f5刷新,一样的意思。

你可以去找找你的用的模块有没有类似的处理

python爬虫问题求大神解决

代码:

以下使用的是python3:

import re

test='''a class="link" href="//dealer.autohomne.com.cn/10253/#pvareaid=20113601 target=" _blank"

    span北京页川斯达/span

/a'''

print(re.findall('a.*?link.*span(.*?)/span',test,re.S)[0])

结果测试:

完美匹配

另外python2下有点差别,不过问题不大:

python2自带的idle下默认使用的是ASCII编码,不能正常显示中文而已,结果是取到了的

请教一个问题,怎么提高 python 爬虫的爬取效率

很多爬虫工作者都遇到过抓取非常慢的问题,尤其是需要采集大量数据的情况下。那么如何提高爬虫采集效率就十分关键,一块了解如何提高爬虫采集效率问题。

1.尽可能减少网站访问次数

单次爬虫的主要把时间消耗在网络请求等待响应上面,所以能减少网站访问就减少网站访问,既减少自身的工作量,也减轻网站的压力,还降低被封的风险。

第一步要做的就是流程优化,尽量精简流程,避免在多个页面重复获取。

随后去重,同样是十分重要的手段,一般根据url或者id进行唯一性判别,爬过的就不再继续爬了。

2.分布式爬虫

即便把各种法子都用尽了,单机单位时间内能爬的网页数仍是有限的,面对大量的网页页面队列,可计算的时间仍是很长,这种情况下就必须要用机器换时间了,这就是分布式爬虫。

第一步,分布式并不是爬虫的本质,也并不是必须的,对于互相独立、不存在通信的任务就可手动对任务分割,随后在多个机器上各自执行,减少每台机器的工作量,费时就会成倍减少。

例如有200W个网页页面待爬,可以用5台机器各自爬互不重复的40W个网页页面,相对来说单机费时就缩短了5倍。

可是如果存在着需要通信的状况,例如一个变动的待爬队列,每爬一次这个队列就会发生变化,即便分割任务也就有交叉重复,因为各个机器在程序运行时的待爬队列都不一样了——这种情况下只能用分布式,一个Master存储队列,其他多个Slave各自来取,这样共享一个队列,取的情况下互斥也不会重复爬取。IPIDEA提供高匿稳定的IP同时更注重用户隐私的保护,保障用户的信息安全。含有240+国家地区的ip,支持API批量使用,支持多线程高并发使用。

python爬虫程序有问题

IOError就说明你抓取的URL连接失效,在getpicture里加一个try except,无法打开链接时,

没有办法,继续执行下一个Url

import sys

        try:

            urllib.urlretrieve(pictureurl,'%s.jpg' %x)

        except:

            print "Unexpected error:", sys.exc_info()[0]