导航:首页 > 编程语言 > python实现wget

python实现wget

发布时间:2022-12-13 20:22:37

python 如何使用wget

你可以使用 subprocess 模块,检查执行 subprocess.call("Your-Command") 后的返回值:


㈡ 怎么使linux或者shell下的wget命令在python脚本中起作用

from subprocess import call
然后就
retn=call(cmd,shell=True)

㈢ python编程遇到的几个坑

1. 爬个别特定网站,不一定得用python写爬虫,多数情况wget一条命令多数网站就能爬的不错,真的玩到自己写爬虫了,最终遇到的无非是如何做大做壮,怎么做分布式爬虫。scrapy这种价值接近0,异步或者多线程搞抓取,选一个成熟的基于磁盘的队列库,kafka之类的,scrapy帮了啥?
2. http库众多,还有gevent库monkey patch以后coroutine的玩这一选择,规模千万的话urllib3很好。
3. 对付网站的诸如登录、ajax,这种不过是体力民工活,不展开了。
4. 速度很重要,放ec2或者国内的云上跑,很重要的指标是你每一亿网页爬下来成本多少,爬的时候比如4核一个虚拟机节点,你能inbound贷款用足100mbps吗。
5. beautifulsoup太慢,全网的爬,encoding的分析也要要快,c实现的chardet还行

最关键的,永远是爬下来以后的信息的提取、分析、使用,就是另外一个话题了。
1.学会使用chrome浏览器查看通信以及查看元素格式
2.增加User-Agent, 这是最简单的反爬措施了
3.写爬虫最好使用Ipython,在交互式的环境下,可以时刻了解自己问题具体出在哪里
4.使用requests
5.用get或者post下好html之后,要确认你需要的东西html里面有,而不是之后用ajax或者javascript加载的。
6.解析的话,BeautifulSoup不错。对于少数非常特殊的,可以考虑用re。
7,需要大量采集数据的话,学会使用框架,比如scrapy。
进阶:
加入网站需要模拟登陆,里面使用了很多ajax或者javascript,或者反爬虫厉害,用requests的session,注意F12查看到底发送了什么数据。
实在不会,就使用模拟浏览器吧,推荐selenium,虽然速度慢点,内存多点,但是真的很省力,而且基本查不出来。
最后,爬虫速度不要太快,加上time.sleep(1),尽量少用多线程,别人建站也不容易,(尤其是小站)你不给别人带来很大的麻烦,别人也就睁一只眼闭一只眼了,否则封IP不是好玩的。

有些页面喜欢使用redirect,然而requests的get和post方法中默认是直接跳转的!很可能你就带着错误的cookies和headers跳转了,所以务必将allow_redirects参数设为false

㈣ centOS如何升级python

centOS下升级python版本的详细步骤

1、可利用linux自带下载工具wget下载,如下所示:

笔者安装的是最小centos系统,所以使用编译命令前,必须安装wget服务,读者如果安装的是界面centos系统,或者使用过编译工具则可跳过安装wget,直接进行下边的编译步骤。

wget http://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz

2、下载完成后到下载目录下,解压

tar -xzvf Python-3.3.0.tgz

3、进入解压缩后的文件夹

cd Python-3.3.0

相关推荐:《Python教程》

4、在编译前先在/usr/local建一个文件夹python3(作为python的安装路径,以免覆盖老的版本)

mkdir /usr/local/python3 (此处新建文件夹用mkdir,如果是新建文件则用touch)

5、开始编译安装

笔者安装的是最小centos系统,所以使用编译命令前,必须安装编译套件gcc,读者如果安装的是界面centos系统,或者使用过编译工具则可跳过安装gcc,直接进行下边的编译步骤

./configure --prefix=/usr/local/python3

make

make install

6、此时没有覆盖老版本,再将原来/usr/bin/python链接改为别的名字(笔者保留了两个版本的,一个python,一个python3,所以第6步笔者略过,把第7步的链接后名字改为python3,读者可按正常步骤,实现的效果相同)

mv /usr/bin/python /usr/bin/python_old2

7、再建立新版本python的链接

ln -s /usr/local/python3/bin/python3 /usr/bin/python

8、这个时候输入

python -V

9、就会显示出python的新版本信息

[idolaoxu@localhost home]# python -V

Python 3.3.0

PS:如果不建立新安装路径python3,而是直接默认安装,则安装后的新python应该会覆盖linux下自带的老版本,也有可能不覆盖,具体看安装过程了,这个大家可以自己试验下,当然如果还想保留原来的版本,那么这种方法最好不过了。

㈤ python 多进程和多线程配合

由于python的多线程中存在PIL锁,因此python的多线程不能利用多核,那么,由于现在的计算机是多核的,就不能充分利用计算机的多核资源。但是python中的多进程是可以跑在不同的cpu上的。因此,尝试了多进程+多线程的方式,来做一个任务。比如:从中科大的镜像源中下载多个rpm包。
#!/usr/bin/pythonimport reimport commandsimport timeimport multiprocessingimport threadingdef download_image(url):
print '*****the %s rpm begin to download *******' % url
commands.getoutput('wget %s' % url)def get_rpm_url_list(url):
commands.getoutput('wget %s' % url)
rpm_info_str = open('index.html').read()

regu_mate = '(?<=<a href=")(.*?)(?=">)'
rpm_list = re.findall(regu_mate, rpm_info_str)

rpm_url_list = [url + rpm_name for rpm_name in rpm_list] print 'the count of rpm list is: ', len(rpm_url_list) return rpm_url_
def multi_thread(rpm_url_list):
threads = [] # url = 'https://mirrors.ustc.e.cn/centos/7/os/x86_64/Packages/'
# rpm_url_list = get_rpm_url_list(url)
for index in range(len(rpm_url_list)): print 'rpm_url is:', rpm_url_list[index]
one_thread = threading.Thread(target=download_image, args=(rpm_url_list[index],))
threads.append(one_thread)

thread_num = 5 # set threading pool, you have put 4 threads in it
while 1:
count = min(thread_num, len(threads)) print '**********count*********', count ###25,25,...6707%25

res = [] for index in range(count):
x = threads.pop()
res.append(x) for thread_index in res:
thread_index.start() for j in res:
j.join() if not threads:
def multi_process(rpm_url_list):
# process num at the same time is 4
process = []
rpm_url_group_0 = []
rpm_url_group_1 = []
rpm_url_group_2 = []
rpm_url_group_3 = [] for index in range(len(rpm_url_list)): if index % 4 == 0:
rpm_url_group_0.append(rpm_url_list[index]) elif index % 4 == 1:
rpm_url_group_1.append(rpm_url_list[index]) elif index % 4 == 2:
rpm_url_group_2.append(rpm_url_list[index]) elif index % 4 == 3:
rpm_url_group_3.append(rpm_url_list[index])
rpm_url_groups = [rpm_url_group_0, rpm_url_group_1, rpm_url_group_2, rpm_url_group_3] for each_rpm_group in rpm_url_groups:
each_process = multiprocessing.Process(target = multi_thread, args = (each_rpm_group,))
process.append(each_process) for one_process in process:
one_process.start() for one_process in process:
one_process.join()# for each_url in rpm_url_list:# print '*****the %s rpm begin to download *******' %each_url## commands.getoutput('wget %s' %each_url)
def main():
url = 'https://mirrors.ustc.e.cn/centos/7/os/x86_64/Packages/'
url_paas = 'http://mirrors.ustc.e.cn/centos/7.3.1611/paas/x86_64/openshift-origin/'
url_paas2 ='http://mirrors.ustc.e.cn/fedora/development/26/Server/x86_64/os/Packages/u/'

start_time = time.time()
rpm_list = get_rpm_url_list(url_paas) print multi_process(rpm_list) # print multi_thread(rpm_list)
#print multi_process()
# print multi_thread(rpm_list)
# for index in range(len(rpm_list)):
# print 'rpm_url is:', rpm_list[index]
end_time = time.time() print 'the download time is:', end_time - start_timeprint main()123456789101112131415161718

代码的功能主要是这样的:
main()方法中调用get_rpm_url_list(base_url)方法,获取要下载的每个rpm包的具体的url地址。其中base_url即中科大基础的镜像源的地址,比如:http://mirrors.ustc.e.cn/centos/7.3.1611/paas/x86_64/openshift-origin/,这个地址下有几十个rpm包,get_rpm_url_list方法将每个rpm包的url地址拼出来并返回。
multi_process(rpm_url_list)启动多进程方法,在该方法中,会调用多线程方法。该方法启动4个多进程,将上面方法得到的rpm包的url地址进行分组,分成4组,然后每一个组中的rpm包再最后由不同的线程去执行。从而达到了多进程+多线程的配合使用。
代码还有需要改进的地方,比如多进程启动的进程个数和rpm包的url地址分组是硬编码,这个还需要改进,毕竟,不同的机器,适合同时启动的进程个数是不同的。

㈥ python的Wget库函数是什么

提取数据,尤其是从网络上提取数据,是数据科学家的主要任务之一。Wget是一个免费的实用程序,用于从Web上进行非交互式文件下载。它支持HTTP,HTTPS和FTP协议,以及通过HTTP代理进行检索。由于它是非交互式的,即使用户没有登录也可以在后台运行。因此,如果你需要下载一个网站或页面中的所有图片时,wget 就可以帮到你

㈦ python mac版怎么使用

这两天重新搞了下python的环境,发现好多地方还是容易忘记,因此有了这篇文章,以后方便查看。
一. 安装python
mac系统其实自带了一个python的执行执行环境,用来运行python还行,但是开发可能就不够了,因此我们需要重新安装python。这里有两种方案安装:
1.homebrew
1
brew install python

这个方案比较简单,如果出错的话可以给前面加sudo试试,这个安装的python可能不是最新版.
2.从官网下载安装
大家可以从下载安装最新版的python,安装比较无脑,一路按下去就OK,缺点是以后升级,卸载都得自己维护.
这两个方法安装的python的位置是不一样的,大家可以用:
1
which python

来查看安装位置.安装完成后在终端中键入python来验证安装是否成功.
二. 安装pip
这里好多文章中说要先安装easy_install, 其实是不用的.
1.我们先获取pip安装脚本:
1
wget

如果没有安装wget可以去这里将所有内容复制下来,新建get-pip.py文件,将内容拷进去就OK了.
2.安装pip
1
sudo python get-pip.py

用python执行刚才获取的脚本,这里sudo可以选择使用,若遇到类似这个报错则必须加sudo:
1
2
3
4
5
6
7
8
9
Exception:

Traceback (most recent call last):...OSError: [Errno 13] Permission denied: 'XXX/pip-0.7.2-py2.7.egg/EGG-INFO/dependency_links.txt'Storing debug log for failure in /Users/bilt/.pip/pip.log

安装成功后可以在终端中键入pip来检测,如果不行重启终端后尝试.
3.修改pip源
在天朝,由于功夫网的原因,使用pip安装一些模块会特别慢甚至无法下载,因此我们需要修改pip的源到国内的一些镜像地址,特别感谢国内无私奉献的组织~
首先进入HOME路径:
1
cd ~

创建.pip目录:
1
mkdir .pip

创建pip.conf文件:
1
touch pip.conf

大家可以用自己喜欢的编辑器打开pip.conf文件,我现在使用的时v2ex的源,所以添加:
1
2
[global]index-url =

大家可以把index-url的值设置为自己实际源的地址.
至此pip源修改成功,以后使用pip安装模块时都会从这个源去下载安装,大家可以自行测试一下.
三. 其他模块安装
1.Pillow/PIL
想用python处理图片,自然少不了PIL这个模块, 由于PIL长期没有更新了, 所以有了Pillow这个模块, 依赖于PIL, 新版的pip安装后会自带Pillow, 但是好像没有zlib模块, 所以会报错:
1
2
3
4
5
6
7
8
9
10
11
12
File "/Library/Python/2.7/site-packages/PIL/Image.py", line 1105, in paste
im.load()

File "/Library/Python/2.7/site-packages/PIL/ImageFile.py", line 190, in load

d = Image._getdecoder(self.mode, d, a, self.decoderconfig)

File "/Library/Python/2.7/site-packages/PIL/Image.py", line 389, in _getdecoder

raise IOError("decoder %s not available" % decoder_name)

IOError: decoder zip not available

因此我们需要手动重新安装:
1
sudo pip install -U Pillow

阅读全文

与python实现wget相关的资料

热点内容
怎么批量有顺序的命名文件夹 浏览:207
杭州程序员健身 浏览:15
dvd光盘存储汉子算法 浏览:758
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:672
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:486
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:383
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:350
风翼app为什么进不去了 浏览:779
im4java压缩图片 浏览:362
数据查询网站源码 浏览:151