我回来了。
目录
- 前言
- 一、爬虫是什么?
- 二、使用步骤
- 代码讲解
- 第一版
- 第二版
- 第三版
- 总结
前言
爬虫,第一章
一、爬虫是什么?
爬虫是指一种自动化程序,通常被用于互联网上的数据采集。这些程序会模拟人类用户的行为,通过访问网页、抓取数据、分析内容等方式来收集网络上的信息。爬虫通常被用于搜索引擎索引、数据挖掘、信息监控、网站更新等领域。它们可以帮助用户快速获取大量的信息,
二、使用步骤
也就10行。
代码如下(示例):
import requests
from faker import Fakerfake = Faker()
url = "https://www.freebuf.com"
headers = {"User-Agent": fake.user_agent()
}
response = requests.get(url, headers=headers)
print(response.text)
让我们运行一下
报错了,,让我们看下信息
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='www.freebuf.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)')))
哦,是SSL 证书验证失败导致的,那怎么解决
-
确保Python 版本和相关的库都是最新的,有时候问题可以通过升级解决。
-
在使用 requests.get() 时,可以设置 verify 参数为 False,这样可以跳过 SSL 证书验证。例如:
response = requests.get(url, headers=headers, verify=False) -
更新你的 SSL 证书。有时候问题是由于过期的证书引起的,更新证书可能会解决问题。
-
确保你的网络环境没有被代理或防火墙篡改,有时候这些因素也会导致 SSL 验证失败。
我都懒得弄,我就选择第二个,改好了,运行一下
可能就有人抱怨了,“还要在代码里输入网址”,这个怎么解决,熟悉python的知道应该用input
函数。请看第二版
import requests
from faker import Fakerfake = Faker()
url = input("请输入要访问的网站URL:")
headers = {"User-Agent": fake.user_agent(),
}
response = requests.get(url, headers=headers, verify=False)
print(response.text)
运行一下
怎么又出问题啊,好像是对我进行了一些重定向和cookie设置,可能是为了阻止爬虫或恶意访问,换网站
可能还有人就抱怨了,抓到的代码第二天就没了,然后就就就出现了第三版
import requests
from faker import Faker
import osfake = Faker()
url = input("请输入要访问的网站URL:")
headers = {"User-Agent": fake.user_agent(),
}
response = requests.get(url, headers=headers, verify=False)
output_text = response.text# 询问用户是否要将输出结果写入文件
create_file = input("是否要保存输出结果?(y/n):")if create_file.lower() == "y":desktop_path = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop')file_path = os.path.join(desktop_path, 'output.txt')with open(file_path, 'w',encoding='utf-8') as file:file.write(output_text)print(f"输出结果已写入文件 {file_path}")
else:print(output_text)
ok,运行一下
成功了
代码讲解
第一版
import requests
from faker import Fakerfake = Faker()
url = "https://www.freebuf.com"
headers = {"User-Agent": fake.user_agent()
}
response = requests.get(url, headers=headers)
print(response.text)
requests 库和 faker 库。requests 库用于发送 HTTP 请求,而 faker 库用于生成虚假的数据。
首先,我们导入了 requests 和 Faker 库。然后,我们创建了一个 Faker 实例并初始化了一个 URL 变量,该变量存储了要发送请求的网站 URL。接着,我们创建了一个名为 headers 的字典变量,其中包含了 User-Agent 的值,该值是使用 Faker 生成的一个随机的用户代理信息。最后,我们使用 requests 库发送了一个 GET 请求,并在请求中包含了我们创建的 headers。最终,我们打印出了请求得到的响应文本。
第二版
import requests
from faker import Fakerfake = Faker()
url = input("请输入要访问的网站URL:")
headers = {"User-Agent": fake.user_agent(),
}
response = requests.get(url, headers=headers, verify=False)
print(response.text)
requests
库从用户输入的URL获取网页内容,并使用Faker
库生成一个随机的User-Agent。
- 首先,导入了
requests
和Faker
库。 - 然后,创建了一个
Faker
对象,用于生成随机数据。 - 提示用户输入要访问的网站URL,并将输入的URL存储在
url
变量中。 - 创建了一个
headers
字典,其中包含一个随机的User-Agent。fake.user_agent()
会生成一个有效的User-Agent字符串。 - 使用
requests.get()
函数发起GET请求,传入URL、headers和verify参数。headers
参数传递了之前创建的headers
字典,verify
参数设置为False
表示不验证SSL证书。 - 获取响应内容,并将响应内容存储在
response
变量中。 - 使用
print()
函数打印响应的文本内容。
第三版
import requests
from faker import Faker
import osfake = Faker()
url = input("请输入要访问的网站URL:")
headers = {"User-Agent": fake.user_agent(),
}
response = requests.get(url, headers=headers, verify=False)
output_text = response.text# 询问用户是否要将输出结果写入文件
create_file = input("是否要保存输出结果?(y/n):")if create_file.lower() == "y":desktop_path = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop')file_path = os.path.join(desktop_path, 'output.txt')with open(file_path, 'w',encoding='utf-8') as file:file.write(output_text)print(f"输出结果已写入文件 {file_path}")
else:print(output_text)
主要功能是获取用户输入的URL,并从该URL获取网页内容。生成一个随机的User-Agent,并询问用户是否要将输出结果写入文件。
- 首先,导入了
requests
、Faker
和os
库。 - 创建了一个
Faker
对象,用于生成随机数据。 - 提示用户输入要访问的网站URL,并将输入的URL存储在
url
变量中。 - 创建了一个
headers
字典,其中包含一个随机的User-Agent。fake.user_agent()
会生成一个有效的User-Agent字符串。 - 使用
requests.get()
函数发起GET请求,传入URL、headers和verify参数。headers
参数传递了之前创建的headers
字典,verify
参数设置为False
表示不验证SSL证书。 - 获取响应内容,并将响应内容存储在
output_text
变量中。 - 使用
input()
函数询问用户是否要将输出结果写入文件。用户输入的字符串将被转换为小写。 - 如果用户输入为
y
,则使用os.path.join()
函数创建一个桌面路径,并将其与output.txt
连接在一起,以获得文件的完整路径。然后,使用open()
函数以写入模式打开文件,并使用write()
函数将输出文本写入文件。最后,使用print()
函数打印出文件路径。 - 如果用户输入为
n
,则直接打印输出文本。
总结
这是爬虫爬取html代码