在日志1中,以及学习了信息的爬取:
# 得到指定一个URL的网页内容
def askURL(url):
# 模拟浏览器头部信息
head = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
# Request封装,用户代理,伪装成浏览器
request = urllib.request.Request(url, headers=head)
html = ""
try:
response = urllib.request.urlopen(request)
html = response.read().decode('utf-8')
# print(html)
except urllib.error.URLError as e:
if hasattr(e, 'code'):
print(e.code)
if hasattr(e, 'reason'):
print(e.reason)
return html
现在学习处理爬取的信息:
首先要熟悉一下BeautifulSoup
from bs4 import BeautifulSoup
import urllib.request
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
}
data = bytes(urllib.parse.urlencode({"name": "eric"}), encoding="utf-8")
url = "http://www.douban.com"
req = urllib.request.Request(url=url, data=data, headers=headers, method="GET")
response = urllib.request.urlopen(req)
bs = BeautifulSoup(response, 'html.parser')
# Tag 拿到它所得到的第一个内容
print(bs.title)
# NavigableString 标签的内容(字符串)
print(bs.meta.attrs)
# BeatifulSoup 整个文档
print(bs)
# Comment 注释
然后了解了一下 bs.find_all() #功能非常的强大
# 正则表达式
t_list = bs.find_all(text=re.compile('\d')) # 应用正则表达式查找包含特定文本的内容
for item in t_list:
print(item)
# limit 参数学习,用来限定获取多少个
t_list = bs.find_all("a", limit=3)
for item in t_list:
print(item)
# css选择器
t_list1 = bs.select('a') # 标签
t_list2 = bs.select('.hot-title') # 类
t_list3 = bs.select('#u1') # id
t_list4 = bs.select("a[class='lb']") # 属性
t_list5 = bs.select("head > div") # 通过子标签来查找
t_list6 = bs.select(".pf~ .lb") # 表示 pf类别同一层次的类别lb
for item in t_list1:
print(item)
print(t_list6[0].get_text()) # get_text()表示取文本
下一篇学习正则表达式