response
=
requests
.
get
(
url
)
if
response
.
status_code
==
200
:
return
response
.
text
except
requests
.
RequestException
:
return
None
def
parse_result
(
html
)
:
pattern
=
re
.
compile
(
'.*?class="title">(.*?)</a'
,
re
.
S
)
items
=
re
.
findall
(
pattern
,
html
)
return
items
def
write_item_to_file
(
item
)
:
text
=
''
item
=
resub
(
item
)
text
+=
item
+
'\n'
print
(
'开始写入数据 ====> '
+
str
(
text
)
)
with
open
(
'../title.txt'
,
'a'
,
encoding
=
'UTF-8'
)
as
f
:
f
.
write
(
text
)
def
resub
(
item
)
:
item
=
re
.
sub
(
r
'^<span>.*\n?'
,
''
,
item
,
flags
=
re
.
MULTILINE
)
item
=
re
.
sub
(
'<em class=\"keyword\">'
,
''
,
item
)
item
=
re
.
sub
(
'</em>'
,
''
,
item
)
item
=
re
.
sub
(
'"'
,
'"'
,
item
)
return
item
def
key2url
(
data
)
:
keyword
=
urllib
.
parse
.
quote
(
data
.
encode
(
'utf-8'
)
.
decode
(
sys
.
stdin
.
encoding
)
.
encode
(
'utf8'
)
)
return
keyword
def
main
(
page
)
:
url
=
'https://search.bilibili.com/all?keyword='
+
key2url
(
"回放"
)
+
'&from_source=web_search&page='
+
str
(
page
)
html
=
request_bilibili
(
url
)
items
=
parse_result
(
html
)
for
item
in
items
:
write_item_to_file
(
item
)
if
__name__
==
"__main__"
:
for
i
in
range
(
1
,
15
)
:
main
(
i
)
发现了一个小问题:
关于range()函数的问题,是获取到二者之间的数。
例如range(1,10)就只会获取1到9。
修改办法:改成range(10)
我选择网页是B站上搜索”回放“1-5页的网页,代码如下:import requestsimport redef request_bilibili(url): try: # 同步请求 response = requests.get(url) if response.status_code == 200: return response.text except requests.RequestException:
全称 Uniform Resource Locator (统一资源定位器),格式为:协议+主机+端口+路径。
比如:https://www.bilibili.com/video/BV17x411w7KC
https:// 是协议,www.bilibili.com 是主机域名,这个例子中端口号并未在主机域名后指定,使用的是默认端口,/video/BV17x411w7KC 是文件路径。
简单来说,就是使用浏览器打开一个网页时,显示在最上方搜索栏中的内容。
正则表达式
import requests
如果你没有第一行的包,那么在PyCharm编译器中的话,只要将鼠标移到那上面去就会弹出个提示框,选择前面有Install的一行蓝字,点击它就能下载回来了。
然后我们准备一个字符串,里面存着我们要借助
b站
引擎搜索的关键字
我这里准备了一行字符串,用它搜索只会有一个
视频
出现:
userSeach='【迷你摩托】张本智和(11岁)VS谭瑞午/Jens'
然后我们准备如下字符串:https://sea
常驻
b站
学习,一个
视频
几十集都是家常便饭
我的习惯用Word文档记笔记,因为Word的
标题
随便拖上拖下,改的时候比较方便。另外除非需要搭配代码的时候才用Typora
【下图是我的记笔记习惯,一般 笔记
标题
是 每集
视频
的名字】
偶然发现评论区 有位老哥把每集
视频
的
标题
发出来。一瞬间,我悟了!这不 每集
视频
的笔记
标题
这不就来了吗,干嘛还要手写!!!
url = 'https://m.bilibili.com/video/av.html'
av = 'av'
header = {'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) '
'AppleWebKi...
之前在学习
B站
分集
视频
时,为做笔记曾需要频繁复制
标题
文字,同时也需要知道
视频
时长,于是用js把
标题
及时长在控制台输出然后复制存为文本文件。
var box=document.getElementsByClassName('list-box')[0];
var boxtext=box.innerText;
var textline=boxtext.replace(/\n(?!P\d+)/g,' ');
console.log(textline);
使用方法:按下F12进入开发者工具,点击“Console”标
查找要爬取内容的页面的url,使用requests库
获取
响应内容
内容为html源码则使用BeautifulSoup等工具解析html源码,得到想要的数据
内容为Json则直接转为Json对象解析
但今天我发现了selenium这个工具,selenium是一套完整的web应用程序测试系统,可以用它来模拟真实浏览器进行测试。在爬虫中使用它的...
from bs4 import BeautifulSoup
url = "https://baijiahao.baidu.com/s?id=1694244573300628320&wfr=spider&for=pc"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
title = soup.title.text
print(title)
其中,`url` 是你要
获取
标题
的网页链接。`requests.get(url)` 发送一个HTTP请求并
获取
响应。`BeautifulSoup(response.content, "html.parser")` 将响应内容解析为HTML文档。`soup.title.text`
获取
HTML文档中的
标题
文本。最后,将
标题
文本输出到控制台。