要说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里还可以加其他信息,比如RefererCookie等等,具体要看目标网站的反爬虫策略。

除了requests,还有urllib库也可以用来获取HTMLurllib是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,祝你爬虫愉快!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。