检查Python版本

东风5c 2026-08-10 VPN加速器 9 0

安装Python

确保你已经安装了Python,建议版本为3.6及以上。


安装所需库

a. 安装Scrapy

使用pip安装Scrapy:

pip install scrapy

b. 安装Selenium

安装Selenium及其依赖的浏览器驱动(如ChromeDriver):

pip install selenium

c. 安装requests库

安装requests:

pip install requests

d. 安装BeautifulSoup

安装BeautifulSoup:

pip install beautifulsoup4

e. 安装Jsoup

安装Jsoup:

pip install jsoup

f. 安装PhantomJS

下载PhantomJS并安装对应的Python绑定:

# 下载并安装最新版本
wget https://github.com/phantomjs/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-windows.zip
# 解压并安装
python setup.py install

编写Scrapy爬虫

创建一个新项目,进入项目目录:

scrapy startproject myspider
cd myspider

创建爬虫文件(如my_spider.py):

from scrapy.spiders import Crawler
from scrapy.http import Request
from scrapy.utils.log import log
class MySpider(Crawler):
    def start_requests(self):
        log.info("Starting crawl")
        yield Request(
            'https://www.baidu.com',
            callback=self.parse,
            meta={'page': 'home'}
        )
    def parse(self, response):
        log.info("Response status: %s", response.status)
        log.info("Response text: %s", response.text)
        # 将数据保存或处理
# 创建并运行爬虫
scrapy crawl myspider

使用Selenium抓取动态内容

编写一个示例脚本(如selenium_demo.py):

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 初始化Chrome选项
options = Options()
options.headless = True  # 无头模式
# 初始化ChromeDriver
driver = webdriver.Chrome(options=options)
try:
    # 打开百度首页
    driver.get('https://www.baidu.com')
    # 等待页面加载
    element = WebDriverWait(driver, 10).until(
        lambda x: x.find_element_by_tag_name('h1')
    )
    print(element.text)
except Exception as e:
    print(f"错误信息:{e}")
# 关闭浏览器
driver.quit()

使用requests抓取网页内容

编写一个简单的requests示例(如requests_demo.py):

import requests
# 发送GET请求
response = requests.get('https://www.baidu.com', headers={
    'User-Agent': 'Mozilla/5. (Windows NT 10.; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58..3029.110 Safari/537.3'
})
print(response.status_code)
print(response.text)

使用BeautifulSoup解析HTML

编写一个BeautifulSoup示例(如beautiful_soup_demo.py):

from bs4 import BeautifulSoup
import requests
# 发送请求并获取响应
response = requests.get('https://www.example.com', headers={
    'User-Agent': 'Mozilla/5. (Windows NT 10.; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58..3029.110 Safari/537.3'
})
# 解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
print(soup.find_all('h1'))  # 找到所有h1标签

使用Jsoup抓取网页内容

编写一个Jsoup示例(如jsoup_demo.py):

from bs4 import BeautifulSoup
import requests
# 发送请求
response = requests.get('https://www.jsoup.org', headers={
    'User-Agent': 'Mozilla/5. (Windows NT 10.; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58..3029.110 Safari/537.3'
})
# 解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
print(soup.find_all('h1'))  # 找到所有h1标签

使用PhantomJS抓取动态渲染内容

编写一个PhantomJS示例(如phantomjs_demo.py):

from phantomjs import PhantomJS
driver = PhantomJS()
driver.start()
try:
    # 打开百度首页
    driver.open('https://www.baidu.com')
    # 等待加载
    driver.wait()
    # 提取网页内容
    content = driver.page_content()
    print(content)
finally:
    driver.close()

运行代码

运行编写好的Python脚本,根据需要选择不同的工具来抓取所需的网页内容。

处理IP被封的问题

在请求中添加代理和处理头部信息:

proxies = {
    'http': 'http://10.10.1.10:3128',
    'https': 'http://10.10.1.10:108',
}
headers = {
    'User-Agent': 'Mozilla/5. (Windows NT 10.; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58..3029.110 Safari/537.3'
}
response = requests.get('https://www.example.com', proxies=proxies, headers=headers)

重试机制

在Scrapy中配置重试:

from scrapy.settings import Settings
settings = Settings()
# 配置重试设置
settings.set('RETRY_HTTPCLIENT', 3)
settings.set('RETRY_HTTPERRORS', ('4xx', '5xx'))

处理动态加载内容

在Selenium中使用 WebDriverWait 确保元素加载完成:

from selenium import WebDriverWait
from selenium.webdriver.chrome import Chrome
from selenium.webdriver.common.by import By
# 初始化浏览器
driver = Chrome()
driver.get('https://www.example.com')
try:
    # 等待元素加载
    element = WebDriverWait(driver, 10).until(
        lambda x: x.find_element_by_tag_name('h1')
    )
    print(element.text)
except:
    print("元素未找到")
driver.quit()

根据你的具体需求选择合适的工具,如果只是简单的静态网页抓取,Scrapy和requests库可能就足够了,如果需要处理动态加载的内容或模拟浏览器操作,Selenium或PhantomJS会更适合,BeautifulSoup和Jsoup则适合对HTML进行解析和操作,逐步尝试这些工具,可以帮助你更好地掌握网页抓取技术。

检查Python版本

扫码添加老王VPN官方微信

扫码添加老王VPN官方微信

020-8756-3928
扫码添加老王VPN官方微信

扫码添加老王VPN官方微信

网站地图