我是Python新手,谢谢你的耐心
我使用请求模块检索了一个网页。我用漂亮的汤收获了几百个对象(链接)。我使用uritools为我要下载的目标页面创建了一个完整url数组
我不希望每个读到这篇文章的人都用请求轰炸web服务器,所以我将展示一个假设的示例,它只适用于2个href。数组如下所示:
hrefs2 = ['http://ku.edu/pls/WP040?PT001F01=910&pf7331=11',
'http://ku.edu/pls/WP040?PT001F01=910&pf7331=12']
如果我把这些输入到100行代码中,我就知道如何检索每一页:
from lxml import html
import requests
url = 'http://ku.edu/pls/WP040/'
payload = {'PT001F01' : '910', 'pf7331' : '11')
r = requests.get(url, params = payload)
那就看第二页
payload = {'PT001F01' : '910', 'pf7331' : '12')
r = requests.get(url, params = payload)
继续输入有效载荷对象。不是所有我要处理的href都是连续的,也不是所有的有效负载在最后一个整数中都是不同的
我想自动化这一点,但我不知道如何从hrefs2阵列创建有效负载
在摆弄uritools时,我发现urisplit
可以为我提供需要解析为有效负载的部分:
[urisplit(x)[3] for x in hrefs2]
['PT001F01=910&pf7331=11',
'PT001F01=910&pf7331=12']
每一个都必须变成一个有效载荷对象,我不知道该怎么办
我使用Python3和uritools,因为这似乎是urltools的符合标准的替代品
我使用shell脚本来获取带有wget
的页面,这确实有效,但它太不符合Python风格了,所以我在这里询问该怎么做。我是说,这确实有效:
import subprocess
for i in hrefs2:
subprocess.call(["wget", i])
您可以将完整的url传递给requests.get(),而无需拆分参数
如果出于某种原因您不想这样做,则需要以某种方式拆分参数。我相信有更好的方法,但首先想到的是:
你可以用更少的代码来做这件事,但我想弄清楚到底发生了什么。我确信已经有一个模块在那里为你做这件事了
相关问题 更多 >
编程相关推荐