import requests from bs4 import BeautifulSoup import re import json def getKeywordResult(keyword): url = 'http://www.baidu.com/s?wd='+keyword try: r = requests.get(url, timeout=30) r.raise_for_status() r.encoding = 'utf-8' return r.text except: return "" def parserLinks(html): soup = BeautifulSoup(html, "html.parser") links = [] for div in soup.find_all('div', {'data-tools': re.compile('title')}): data = div.attrs['data-tools'] #获得属性值 d = json.loads(data) #将属性值转换成字典 links.append(d['title']) #将返回链接的题目返回 return links def main(): html = getKeywordResult('Python语言程序设计基础(第2版)') ls = parserLinks(html) count = 1 for i in ls: print("[{:^3}]{}".format(count, i)) count += 1 main()
时间: 2024-04-27 18:19:23 浏览: 179
这段代码的作用是在百度搜索中搜索关键词"Python语言程序设计基础(第2版)",然后解析搜索结果页面中的链接和标题,并将这些标题列成一个列表进行输出。
具体来说,这段代码使用了 requests 库向百度搜索发送了一个 GET 请求,并将返回的页面内容传递给了 parserLinks 函数进行解析。解析函数使用了 BeautifulSoup 库来解析 HTML 页面,并使用正则表达式和 JSON 库来获取页面中的链接和标题信息。最后,这些标题被按照一定的格式输出到标准输出流中。
如果您想了解更多关于 requests、BeautifulSoup、正则表达式和 JSON 库的信息,建议您查阅相关文档或者学习相关的课程。
相关问题
运行这段代码import requests from bs4 import BeautifulSoup import pprint import json def download_all_htmls(): """ 下载所有列表页面的HTML,用于后续的分析 """ htmls=[] for idx in range(24): url=f"https://www.utusan.com.my/page/{idx+1}" print("craw heml:",url) r=requests.get(url) if r.status_code !=250: raise Exception("error") htmls.append(r.text) return htmls htmls=download_all_htmls() htmls[0],并找出错误优化代码
这段代码中有几个错误需要优化:
1. 在判断请求状态码时,应该是 `if r.status_code != 200:` 而不是 `if r.status_code != 250:`。
2. 在函数 `download_all_htmls()` 中,`return htmls` 应该在 for 循环外面,而不是在循环内部。否则,只会下载第一个页面的 HTML。
优化后的代码如下:
```
import requests
from bs4 import BeautifulSoup
import pprint
import json
def download_all_htmls():
"""下载所有列表页面的HTML,用于后续的分析"""
htmls = []
for idx in range(24):
url = f"https://www.utusan.com.my/page/{idx+1}"
print("craw html:", url)
r = requests.get(url)
if r.status_code != 200:
raise Exception("error")
htmls.append(r.text)
return htmls
htmls = download_all_htmls()
print(htmls[0])
```
修改代码,使得li_list的编码格式是utf-8import requests from bs4 import BeautifulSoup url = 'https://www.icbc.com.cn/page/827855918799994880.html' response = requests.get(url=url) page_response = response.text soup = BeautifulSoup(page_response, 'html.parser',from_encoding='utf-8') li_list = soup.select('#mypagehtmlcontent p')
import requests
from bs4 import BeautifulSoup
url = 'https://www.icbc.com.cn/page/827855918799994880.html'
response = requests.get(url=url)
page_response = response.content.decode('utf-8')
soup = BeautifulSoup(page_response, 'html.parser')
li_list = soup.select('#mypagehtmlcontent p')
# 以下为测试代码,可以不用理会
for li in li_list:
print(li.text)
阅读全文