要说Python怎么获取HTML,那方法可真不少,就像打开一扇扇通往网页世界的大门。最常用的,恐怕就是requests
库了,简直是爬虫界的瑞士军刀。
requests
的用法极其简单。先pip install requests
安装,然后几行代码就能搞定:
“`python
import requests
url = “https://www.example.com” # 目标网页
response = requests.get(url) # 发送GET请求
html_content = response.text # 获取HTML内容
print(html_content[:200]) # 打印前200个字符,看看是不是成功了
“`
这段代码就像一个快递员,把网页的内容原封不动地送到你手上。response.text
里,就是我们要的HTML源代码。
但是,等等!你以为拿到HTML就万事大吉了吗?Naive!很多网站的反爬虫机制可不是吃素的。如果直接用上面的代码,很可能被识别为爬虫,然后…就没有然后了。
所以,我们需要伪装一下自己,让网站以为我们是正常用户。怎么做?加个headers
!
“`python
import requests
url = “https://www.example.com”
headers = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36”
} # 模拟浏览器头部信息
response = requests.get(url, headers=headers)
html_content = response.text
print(html_content[:200])
“`
User-Agent
就像你的身份证,告诉网站你是谁。上面的代码模拟了一个Chrome浏览器的身份,是不是瞬间感觉安全多了?当然,headers
里还可以加其他信息,比如Referer
,Cookie
等等,具体要看目标网站的反爬虫策略。
除了requests
,还有urllib
库也可以用来获取HTML。urllib
是Python自带的库,不需要额外安装,但是用起来稍微麻烦一点。
“`python
import urllib.request
url = “https://www.example.com”
headers = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36”
}
req = urllib.request.Request(url, headers=headers)
response = urllib.request.urlopen(req)
html_content = response.read().decode(“utf-8”) # 注意要解码
print(html_content[:200])
“`
urllib
需要先创建一个Request
对象,然后用urlopen
打开,最后再用read()
读取内容,并且需要手动解码。相对来说,requests
更简洁易用。
等等,还没完!有些网站用的是JavaScript动态渲染页面,也就是说,HTML内容是通过JavaScript代码生成的。如果你直接用requests
或者urllib
,只能拿到最初的HTML框架,看不到完整的内容。
这时候,就需要用到selenium了。selenium是一个自动化测试工具,可以模拟浏览器行为,执行JavaScript代码,从而获取完整的HTML。
“`python
from selenium import webdriver
确保你已经安装了chromedriver,并且添加到环境变量中
driver = webdriver.Chrome()
driver.get(“https://www.example.com”)
html_content = driver.page_source
driver.quit() # 记得关闭浏览器
print(html_content[:200])
“`
selenium需要安装chromedriver,并且配置好环境变量。这段代码会启动一个Chrome浏览器,访问目标网页,然后把渲染后的HTML内容保存到html_content
里。
selenium虽然强大,但是速度比较慢,而且会占用大量资源。如果只是简单地获取HTML,用requests
就足够了。只有在遇到JavaScript动态渲染的页面时,才需要考虑selenium。
还有一些其他的库也可以用来获取HTML,比如aiohttp
,它是一个异步HTTP客户端,适合高并发的爬虫。但是,对于新手来说,requests
和selenium就足够用了。
所以,Python怎么获取HTML?总结一下:
requests
:简单易用,适合静态网页。urllib
:Python自带,但不如requests
方便。- selenium:模拟浏览器行为,适合JavaScript动态渲染的页面。
选择哪个库,取决于你的具体需求。如果是简单的爬虫,requests
是首选。如果遇到反爬虫机制,可以尝试修改headers
,或者使用代理IP。如果是JavaScript动态渲染的页面,selenium是唯一的选择。
别忘了,爬虫是一把双刃剑。在获取HTML的同时,也要尊重网站的robots.txt协议,遵守法律法规,不要过度爬取,以免给网站造成不必要的负担。文明爬虫,从我做起!
对了,还有一点很重要!拿到HTML之后,下一步就是解析HTML了。这又是另一个话题了,涉及到BeautifulSoup、lxml等库的使用。不过,先把HTML拿到手再说,对吧?
希望这篇文章能帮你更好地理解Python怎么获取HTML,祝你爬虫愉快!
评论(0)