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()
仅遵循本教程,但什么也没回来。我没有发现有错误,但是发生了。谁能告诉我我的程序出了什么问题?
答案 0 :(得分:0)
让我们看看。可能的问题:
您的函数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))
您的函数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()
如果有更大的背景,您可以告诉我们,我可以为您提供更好的改进建议。如果只是简单的脚本可以快速进行报废,我想这样做就可以了。