运行搜寻器时没有反馈

时间:2018-08-21 07:39:58

标签: python web-crawler

import requests
from requests.exceptions import RequestException
import re


def get_one_page(url):
    try:
        headers = {
            'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) '
                          'Chrome/48.0.2564.116 Safari/537.36'
        }
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        return None


def parse_one_page(html):
    pattern = re.compile('<dd>.*?board-index.*?>(.*?)</i>.*?src="(.*?)".*?name.*?a.*?>(.*?)</ a>.*?star.*?>(.*?)</p>'
                         '.*?releasetime.*?(.*?)</p>.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>.*?</dd>', re.S)
    items = re.findall(pattern, html)
    return items


def main():
    url = 'https://maoyan.com/board/4'
    html = get_one_page(url)
    print(parse_one_page(html))


if __name__ == '__main__':
    main()

This is a screenshot

仅遵循本教程,但什么也没回来。我没有发现有错误,但是发生了。谁能告诉我我的程序出了什么问题?

1 个答案:

答案 0 :(得分:0)

让我们看看。可能的问题:

  1. 您的函数get_one_page可能会默默返回None 通过第一个return None语句。您可以设置打印 用这种方法检查您实际上得到了什么

    def main():
        url = 'https://maoyan.com/board/4'
        html = get_one_page(url)
        print(html)
        print(parse_one_page(html))
    
  2. 您的函数parse_one_page可能找不到任何内容并返回空列表。使用我们为html设置的上一个打印版本,您应该能够看到情况是否如此。

我将如何略微编辑这些功能:

import requests
from requests.exceptions import RequestException
import re


def get_one_page(url):
    try:
        headers = {
            'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) '
                          'Chrome/48.0.2564.116 Safari/537.36'
        }
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            return "Success", response.text
        return "Failure", None
    except RequestException:
        return "Failure", None


def parse_one_page(html):
    pattern = re.compile('<dd>.*?board-index.*?>(.*?)</i>.*?src="(.*?)".*?name.*?a.*?>(.*?)</ a>.*?star.*?>(.*?)</p>'
                         '.*?releasetime.*?(.*?)</p>.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>.*?</dd>', re.S)
    items = re.findall(pattern, html)
    return items


def main():
    url = 'https://maoyan.com/board/4'
    result, html = get_one_page(url)
    if result == "Success":
        items = parse_one_page(html)
        if items: #If list is empty, this equals False. Else, it equals True
            print(items)


if __name__ == '__main__':
    main()

如果有更大的背景,您可以告诉我们,我可以为您提供更好的改进建议。如果只是简单的脚本可以快速进行报废,我想这样做就可以了。