Python学习之笔记(一)--第11章 从Web抓取信息

之前断断续续学过一点python的基础知识,现在重新学回,顺便写点笔记

书名:《Python变成快速上手 让繁琐工作自动化》

11.6 项目:“I’m Feeling Lucky”Google 查找

(根据自己的实际情况稍作了一些改动)

编写一个脚本完成以下事情:

  • 从命令行参数/粘贴板中获取查询关键字
  • 取得查询结果页面
  • 为每个结果打开一个浏览器选项卡

这意味着代码需要完成以下工作:

1. 从 sys.argv 中读取命令行参数或用pyperclip.paste()获取粘贴板内容
	#通过address获取搜索关键字
    if len(sys.argv) > 1:
    	address = ''.join(sys.argv[1:])
    else:
    	address = pyperclip.paste()
2. 用 requests 模块取得查询结果页面。
	res = requests.get("http://www.baidu.com/s?wd="+address)
	res.raise_for_status()

某度的URL参数

http://www.baidu.com/s?wd=关键字

wd(Keyword):查询的关键词;

3. 找到每个查询结果的链接。

在chrome中调用开发者工具(Ctrl + Shift + l)

可以发现每个查询结果的链接在

<a data-click=......>

简单介绍一下class 属性规定元素的类名,a是标签定义超链接

每条搜索结果的链接放在class="t"的a中,
Python学习之笔记(一)--第11章 从Web抓取信息_第1张图片

	soup = bs4.BeautifulSoup(res.text, "html.parser")
	# 将select结果放入linkElems
	linkElems = soup.select('.t a')

在bs4.BeautifulSoup()中加上"html.parser",就不会报“No parser was explicitly specified”的警告

4. 调用webbrowser.open()函数打开Web 浏览器。
	numOpen = min(5,len(linkElems))
	#一次打开不多于五条的搜索结果
	for i in range(numOpen):
    	webbrowser.open(linkElems[i].get('href'))

完整代码

import bs4, webbrowser, sys, pyperclip, requests

if len(sys.argv) > 1:
    address = ''.join(sys.argv[1:])
else:
    address = pyperclip.paste()

res = requests.get("http://www.baidu.com/s?wd="+address)
res.raise_for_status()

soup = bs4.BeautifulSoup(res.text, "html.parser")
linkElems = soup.select('.t a')

numOpen = min(5,len(linkElems))
for i in range(numOpen):
    webbrowser.open(linkElems[i].get('href'))

你可能感兴趣的:(笔记)