def getHTMLText(url): 7 try: 8 r = requests.get(url, timeout = 30) 9 r.raise_for_status() 10 r.encoding = r.apparent_encoding 11 return r.text 12 except: 13 return '爬取失败'
时间: 2024-02-14 09:23:47 浏览: 21
这是一个Python爬虫程序,函数名为getHTMLText,其输入参数为url,函数的作用是爬取指定url对应网页的HTML文本,并返回该文本内容。该程序使用了requests库中的get方法,设置了超时时间为30秒,并对请求返回的状态码进行了检查。如果请求成功,就将网页内容编码格式设置为自动检测,并返回文本内容;如果请求失败,就返回字符串“爬取失败”。
相关问题
import requests from bs4 import BeautifulSoup def getHTMLText(url): try: r = requests.get(url,timeout=30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "产生异常" def jiexi(html_doc): soup = BeautifulSoup(html_doc,"html.parser") links = soup.find_all('a') for link in links: print(link.name,link["nref"],link.get.next()) if __name__ == 'main': url = "https://wallhaven.cc/toplist?page=7" print(getHTMLText(url))改进代码
这段代码可以改进的地方有:
1. 函数名jiexi不太直观,可以改为更明确的parse_links。
2. 在解析链接时,可以加上判断,如果链接是以http或https开头的,才输出链接信息,否则忽略。
3. 在主程序中,应该调用parse_links函数,而不是直接打印HTML页面内容。
改进后的代码如下:
```
import requests
from bs4 import BeautifulSoup
def get_html_text(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "产生异常"
def parse_links(html_doc):
soup = BeautifulSoup(html_doc, "html.parser")
links = soup.find_all('a')
for link in links:
if link.has_attr('href') and (link['href'].startswith('http') or link['href'].startswith('https')):
print(link.name, link['href'], link.get_text())
if __name__ == '__main__':
url = "https://wallhaven.cc/toplist?page=7"
html_text = get_html_text(url)
parse_links(html_text)
```
这样修改后,代码更加清晰易懂,功能也更加完善。
请分析以下每一条代码的作用def getHTMLtext(url): """请求获得网页内容""" try: r = requests.get(url, timeout=30) r.raise_for_status() r.encoding = r.apparent_encoding # 是中文正常显示 print("访问成功") return r.text except: print("访问失败") return " "
这段代码定义了一个名为`getHTMLtext`的函数,其功能是通过传入一个url参数获取网页内容。具体分析如下:
- `r = requests.get(url, timeout=30)`:使用requests库的get方法获取指定url的内容,并将结果存储在变量r中。timeout参数设置了请求的超时时间为30秒。
- `r.raise_for_status()`:判断请求是否成功。如果请求返回的状态码为不是200,那么将会引发HTTPError,程序会停止运行。
- `r.encoding = r.apparent_encoding`:使用网页内容的编码方式对r对象进行编码。
- `print("访问成功")`:若请求成功,则输出“访问成功”的提示信息。
- `return r.text`:将网页的文本内容返回。
- `except:`:如果try代码块中的代码出现异常,则执行except代码块中的代码。
- `print("访问失败")`:若请求失败,则输出“访问失败”的提示信息。
- `return " "`:返回一个空字符串。