Python实现“关键词”自动点击

花生 可爱的博主

时间: 2024-10-30 阅读: 1 字数:4536

{}
在这个博客中,我们将分享一个简单的Python爬虫示例,它利用代理访问网页并从中提取信息。该脚本使用了多个库,包括`requests`、`BeautifulSoup`和`subprocess`,来处理HTTP请求和网页解析。

目录

Python代理爬虫示例

在这个博客中,我们将分享一个简单的Python爬虫示例,它利用代理访问网页并从中提取信息。该脚本使用了多个库,包括requestsBeautifulSoupsubprocess,来处理HTTP请求和网页解析。

代码结构

1. 获取代理

首先,我们定义了一个函数get_proxy,用于获取有效的代理。该函数会尝试连接到指定的代理,如果成功则返回代理地址,否则会循环重试。

def get_proxy():
    while True:
        tunnel = "xxxxx"
        username = "xxxxx"
        password = "xxxxx"
        
        proxy = f"http://{username}:{password}@{tunnel}/"
        
        if check_proxy(proxy) and test_proxy_with_curl(proxy, 'https://www.baidu.com'):
            return proxy
        else:
            print(f"代理无效: {proxy},正在获取新的代理...")

2. 检查代理的有效性

我们还定义了check_proxy函数,用于验证代理是否可用。函数向http://httpbin.org/ip发送请求,并检查响应的状态码。

3. 使用curl测试代理

为了确保代理工作正常,我们使用subprocess库中的run函数运行curl命令。这个函数会向目标URL发送请求,并打印测试结果。

def test_proxy_with_curl(proxy, target_url):
    try:
        result = subprocess.run(
            ['curl', '-x', proxy, '-I', target_url],
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE,
            timeout=10
        )

        if result.returncode == 0:
            print(f"代理测试成功: {result.stdout.decode('utf-8')}")
            return True
        else:
            print(f"代理测试失败: {result.stderr.decode('utf-8')}")
            return False
    except subprocess.TimeoutExpired:
        print("代理测试超时。")
        return False
    except Exception as e:
        print(f"发生错误: {e}")
        return False

4. 模拟访问链接

simulate_access函数中,我们模拟访问一个链接并处理可能出现的异常。在请求之间随机等待一段时间,通常在1到3秒之间,以模拟真实用户的行为。

def simulate_access(href, requests):
    time.sleep(random.uniform(1, 3))
    try:
        response = requests.get(href)
        response.raise_for_status()
        print(f"成功访问: {href}")
    except requests.exceptions.RequestException as e:
        print(f"抓取URL时发生错误: {e}")

5. 随机用户代理

为了防止被网站识别为爬虫,我们实现了一个函数get_random_user_agent,从预定义的用户代理列表中随机选择一个。

6. 查找链接

最后,在find_links_with_keyword中,我们利用百度搜索特定的关键词并提取相关链接。该函数会遍历多个页面,提取标题和链接,如果找到特定关键词的结果,就模拟访问这个链接。

def find_links_with_keyword(url, keyword, page_size=50, max_pages=5, proxies=None):
    headers = {
        'Host': 'www.baidu.com',
        'User-Agent': get_random_user_agent()
    }
    
    soup_url = ''
    
    for page in range(1, max_pages + 1):
        params = {
            'wd': keyword,
            'pn': (page - 1) * page_size,
            'rn': page_size,
            'ie': 'utf-8'
        }

        try:
            aurl = f"{url}?{urlencode(params)}"
            time.sleep(random.uniform(1, 3))
            if soup_url:
                aurl = f'https://www.baidu.com/{soup_url}'

            response = requests.get(aurl, headers=headers, proxies=proxies, timeout=0.7)
            response.raise_for_status()
            response.encoding = response.apparent_encoding

            soup = BeautifulSoup(response.text, 'html.parser')
            # 提取标题和链接的逻辑。
        except requests.exceptions.RequestException as e:
            max_pages -= 1
            print(f"抓取URL时发生错误: {e}")

7. 主函数

在主函数中,我们定义了要搜索的关键词,并依次调用find_links_with_keyword函数。

if __name__ == '__main__':
    while True:
        base_url = "https://www.baidu.com/s"
        search_keywords = [
            "it博客", "花生博客", "优秀it博客", 
            "it个人博客", "前端学习sjxi", 
            "个人博客 sjxi", "优秀博客", 
            "好看的博客 sjxi"
        ]
        
        for keyword in search_keywords:
            find_links_with_keyword(base_url, keyword, page_size_number, max_pages_number, None)

总结

通过此示例,我们展示了如何使用Python构建一个简单的代理爬虫,能够有效地访问网页并提取信息。您可以根据需要修改关键词和目标网站,以实现更多的功能。希望这篇文章能对您有所帮助,期待您在Python爬虫之路上的更多探索!

本文章网址:https://www.sjxi.cn/detil/b6f76bb3b29b43e3909aab53a197f618
最新评论
当前未登陆哦
登陆后才可评论哦

湘ICP备2021009447号

×

(穷逼博主)在线接单

QQ: 1164453243

邮箱: abcdsjx@126.com

前端项目代做
前后端分离
Python 爬虫脚本
Java 后台开发
各种脚本编写
服务器搭建
个人博客搭建
Web 应用开发
Chrome 插件编写
Bug 修复