php正则函数抓取网页连接( 这是小白我第一次写博客,也是第一次了首页的部分URL(CSDN自行忽略…))
优采云 发布时间: 2022-03-18 10:20php正则函数抓取网页连接(
这是小白我第一次写博客,也是第一次了首页的部分URL(CSDN自行忽略…))
使用正则表达式和urllib库实现CSDN爬取
这是我第一次给小白写博客,也是第一次写爬虫。我爬取了CSDN主页的一些网址(CSDN自己忽略了...)。简单记录一下过程。
重新图书馆
re 库(正则表达式)是一个非常有用的模块,用于在 python3 中匹配文本。以下是re的使用规范。
另外一个很重要的就是区分正则表达式中的()、[]、{}及其作用。关联:
源网络,使用 urllib.requests
url.requests 为python提供了比较完善的网页内容爬取功能。
url.requests.Requests(URL, data) 可以向 URL网站 发送请求,数据作为请求的头部内容发送。参数还有很多,不知道怎么用,就不多说了。url.requests.urlopen(respond)用于读取网站返回的内容,但是返回格式是http.client.HTTPResponse,所以我们需要使用read()方法读取url.requests.urlopen (回应)内容。但同时,我们还需要对读取的内容进行解码。大多数编码形式都是“utf-8”,但也有个别情况。在这种情况下,可以使用 python chardet 库来检测和确定编码格式。
respond = urllib.request.Request(targetUrl)
respond = urllib.request.urlopen(respond) # http.client.HTTPResponse
content = respond.read()
content = content.decode("utf-8")
最后部分
为了把爬取的内容放到txt文件中,我使用open函数来实现这个功能。
预定义:
import re
import urllib.request
url = "https://blog.csdn.net/nav/python"
href = open("href", "w+")
html = open("html", "r")
之后找到正确的URL地址,发现大部分都是
这是我们想要的 URL,所以我们可以将正则表达式写为 'https?: ///\w+?/article/details/[0-9]+'
def get_href(html):
content = html.read()
link = re.compile(r'https?:\/\/blog.csdn.net\/\w+?\/article\/details\/[0-9]+').findall(content)
for i in link:
href.write(i)
href.write("\n")
return href
re.conpile() 函数用于定义正则表达式的匹配格式,从而匹配爬取的html中想要的URL。fillall() 函数遍历整个 html 并搜索所有成功匹配的内容。
最终代码
import re
import urllib.request
url = "https://blog.csdn.net/nav/python"
href = open("href", "w+")
html = open("html", "r")
def get_href(html):
content = html.read()
link = re.compile(r'https?:\/\/blog.csdn.net\/\w+?\/article\/details\/[0-9]+').findall(content)
for i in link:
href.write(i)
href.write("\n")
return href
get_href(html)
def clear_href():
href = open("href", "r+")
list = []
content = href.read()
content = content.split("\n")
for i in content:
if i not in list:
list.append(i)
for i in list:
href1.write(i+"\n")
return href1
clear_href()
这是所有最终代码。用不了多少时间,就简单记录一下,方便以后回忆,也希望别人能从中受益。