简体   繁体   English

如何在python的请求库中使用变量

[英]how to use a variable in requests library of python

I'm trying to make a script which reads crunchyroll's rss and visits the LINK in the latest upload and downloads subs from it.. the process goes like : 1.) Read The latest episode link from RSS. 我正在尝试制作一个脚本,该脚本读取crunchyroll的rss并访问最新上传的LINK并从中下载子链接。该过程如下:1.)从RSS阅读最新的情节链接。 2.) Go to the link 3.) In the source code, look for text "ssid". 2.)转到链接3.)在源代码中,查找文本“ ssid”。 4.) Get the 6 characters of the ssid. 4.)获取ssid的6个字符。 5.) Then append those characters at the end of this like " http://www.crunchyroll.com/xml/?req=RpcApiSubtitle_GetXml&subtitle_script_id= " and save the xml page. 5.)然后在这些字符的末尾附加“ http://www.crunchyroll.com/xml/?req=RpcApiSubtitle_GetXml&subtitle_script_id= ”并保存xml页面。

My script works half way... 我的脚本工作了一半...

My Code:- 我的代码:

import feedparser
import webbrowser
import os
import subprocess  
import re
import urllib
import urllib2
from urllib2 import urlopen
from bs4 import BeautifulSoup
import requests
import cookielib


feed = feedparser.parse('http://www.crunchyroll.com/rss/anime')  #checks the RSS
url = feed['entries'][0]['link'] + '?p720=1'         # get's the link from latest release and appends some character for the 720p resolution of the link.

# Now, here, I'm writing this URL to a text file and then read from the text file

file = open("newfile.txt", "w")
file.write(url)
file.close()

file = open('newfile.txt', 'r')
#print file.read()
lobo = file.read()
print lobo

# Now, I put the URL that is being read from file in requests to go to the link. Everything works fine till here.

r = requests.get(lobo)
soup = BeautifulSoup(r.text)
print soup.title
webbrowser.open_new_tab(lobo)
subtitles = soup.findAll('span',{'class':'showmedia-subtitle-text'})
for ssid in subtitles:
  x = ssid.find_all('a', limit=1)
for a in x:
  print a['href'][-6:]

xmlLink = 'http://www.crunchyroll.com/xml/?req=RpcApiSubtitle_GetXml&subtitle_script_id=' + a['href'][-6:]
#webbrowser.open_new_tab(xmlLink)
print xmlLink

Now, I get error that 'a' in this xmlLink is not defined. 现在,我得到一个错误,指出此xmlLink中的“ a”未定义。

But, there's a twist to it... if I put the direct http link in "r = requests.get(lobo)" .. everything works like it is supposed to.But, if I use this variable.. it's not working. 但是,这有个问题……如果我将直接的http链接放在“ r = request.get(lobo)”中,那么一切都会按预期进行。但是,如果我使用此变量,则无法工作。 。

Any help would be appreciated.Thank You 任何帮助将不胜感激。谢谢

It looks like the a variable is defined inside of the for loop but the xmlLink variable is not. 看起来a变量是在for循环内定义的forxmlLink变量不是。 Try indenting the xmlLink line in to match the indentation level of the for loop. 尝试缩进xmlLink行以匹配for循环的缩进级别。 For example: 例如:

for a in x:
  print a['href'][-6:]

  xmlLink = 'http://www.crunchyroll.com/xml/?req=RpcApiSubtitle_GetXml&subtitle_script_id=' + a['href'][-6:]
  #webbrowser.open_new_tab(xmlLink)
  print xmlLink

The url that you're using is a str . 您使用的网址是str You should use Python's string format function. 您应该使用Python的字符串格式函数。

xmlLinkBase = 'http://www.crunchyroll.com/xml/?req=RpcApiSubtitle_GetXml&subtitle_script_id={0}'
for a in x:
   print a['href'][-6:]
   xmlLink =  xmlLinkBase.format(a['href'][-6:])
   #webbrowser.open_new_tab(xmlLink)
   print xmlLink

str.format Docs str.format 文件

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM