有些人帮助理解我自己的Python代码

时间:2015-12-01 12:07:51

标签: python

我开始学习Python,我已经编写了以下Python代码(其中一些省略了)并且它工作正常,但我想更好地理解它。所以我做了以下几点:

html_doc = requests.get('[url here]')

其次是:

if html_doc.status_code == 200:
    soup = BeautifulSoup(html_doc.text, 'html.parser')
    line = soup.find('a', class_="some_class")
    value = re.search('[regex]', str(line))
    print (value.group(0))

我的问题是:

  • html_doc.text到底做了什么?我明白它会从html_doc中产生“文本”(字符串?),但为什么它不是文本呢?它是什么?字节?也许是一个愚蠢的问题,但为什么requests.get没有创建一个包含HTML代码的真长字符串?
  • 我可以获得re.search结果的唯一方法是value.group(0),但我完全不知道这是做什么的。为什么我不能直接看value?我传给它一个字符串,只有一个匹配,为什么生成的value不是字符串?

2 个答案:

答案 0 :(得分:4)

class WCFCalculadoraServiceProxy : ClientBase<ICalculadoraService>, ICalculadoraService { public int Add(int num1, int num2) { //Lo que hace es llamar al método del servicio. return base.Channel.Add(num1, num2); } public Task<int> AddAsync(int num1, int num2) { //Lo que hace es llamar al método del servicio. return base.Channel.AddAsync(num1, num2); } } 返回值,如文档中所述,是Response对象。

如文档中所述,

class Program { static void Main(string[] args) { WCFCalculadoraServiceProxy miProxy = new WCFCalculadoraServiceProxy(); try { addAsync(miProxy); } catch { //TODO } finally { miProxy.Close(); } } private static async void addAsync(WCFCalculadoraServiceProxy paramProxy) { int resultado = await paramProxy.AddAsync(1, 2); //is reached Console.WriteLine("Service is host at " + DateTime.Now.ToString()); // is not reached Console.WriteLine("El resultado de sumar 1 y 2 es: " + resultado); Console.WriteLine("Host is running... Press <Enter> key to stop"); Console.ReadKey(); Console.ReadLine(); } } 返回值为MatchObject object。

引入了两个对象,因为它们包含的信息比简单的响应字节(例如HTTP状态代码,响应头等)或简单找到的字符串值(例如它包括第一个和最后一个匹配字符的位置)要多得多。

有关更多信息,您必须学习文档。

仅供参考,要检查返回值的类型,您可以使用内置requests.get()函数:

re.search()

答案 1 :(得分:1)

在我看来,你缺乏关于类,对象和方法的一些基本知识......等等,你需要阅读更多关于它的信息here(对于Python 2.7)和请求模块here

关于您提出的问题,当您键入html_doc = requests.get('url')时,您正在创建类requests.models.Response的实例,您可以通过以下方式进行检查:

>>> type(html_doc)
<class 'requests.models.Response'>

现在,html_doc有方法,因此html_doc.text会向您返回服务器的回复

同样适用于re模块,其每个方法都生成不仅仅是intstring

的响应对象