【问题标题】:Parsing URL for scraping tasks解析抓取任务的 URL
【发布时间】:2016-04-29 15:42:26
【问题描述】:

我想解析一些 URL 并访问该站点并进一步抓取一些数据。

基本上我当前的代码是:

i = 9
while(i < 118):
  dict = {'start': i}
  url1 = urllib.urlencode(dict)
  url2 = urlparse.urljoin('http://intelligencesquaredus.org/debates/past-debates ', url1)
  print url2
  i = i + 9

产生结果

http://intelligencesquaredus.org/debates/past-debates/start=9
http://intelligencesquaredus.org/debates/past-debates/start=18
http://intelligencesquaredus.org/debates/past-debates/start=27

但我希望链接是

http://intelligencesquaredus.org/debates/past-debates?start=9

任何帮助将不胜感激。 提前致谢

【问题讨论】:

  • 你到底想要什么?您有一个 while 循环,这就是您有许多链接的结果的原因。
  • 有许多链接的结果很好,这是预期的行为。我只需要格式正确。请再次检查。
  • 好的,你想要? 而不是/
  • 是的,现在你是对的
  • 我建议使用列表表达式:base_url = "http://intelligencesquaredus.org/debates/past-debates"[''.join((base_url, '?', 'start=', str(i))) for i in range(9, 118, 9)]

标签: python url urllib


【解决方案1】:

使用

url2=('?'.join(('http://intelligencesquaredus.org/debates/past-debates '+url1).split(' ')))

在上面的 sn-p 中,您将 url 作为字符串并将所需的字符串添加到其中(url1)。

然后你按空格分割得到一个包含两个元素的列表,然后你用? 加入。

替代方案(deloz 建议):

base_url = "http://intelligencesquaredus.org/debates/past-debates"
for a in([''.join((base_url, '?', 'start=', str(i))) for i in range(9, 118, 9)]):
    print(a)

【讨论】:

  • 那是使用列表理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-26
  • 2013-07-20
  • 2011-09-16
  • 2017-11-12
相关资源
最近更新 更多