用selenium爬取百度新闻

这段代码展示了如何使用selenium模拟浏览器行为,打开百度新闻首页,输入关键词进行搜索,并遍历搜索结果,抓取每页前20条新闻的标题、发布时间和网页内容,保存为json文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# -*- coding: UTF-8 -*-
from selenium.common.exceptions import TimeoutException, NoSuchElementException, WebDriverException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from bs4 import BeautifulSoup
import urllib.request
import io
import json
import os
import requests
import sys
#用selenium模拟浏览器行为打开chrome,打开新闻首页,输入关键词,点击,然后查找下一页
# import chardet
import re
def test_sel(keyword):
    driver = webdriver.Chrome()
    link = 'http://news.baidu.com/?tn=news'
    driver.get(link)
    try:
        WebDriverWait(driver, 30).until(
            EC.presence_of_element_located((By.ID, "ww"))
        )

    except TimeoutException:
        print ('加载页面失败')
    try:
        element = driver.find_element_by_css_selector('#ww')
        print ('成功找到了搜索框')
        keyword =
在Python中爬取百度新闻通常会涉及到络爬虫技术,主要利用`requests`库获取网页内容,然后使用如`BeautifulSoup`或`lxml`解析HTML提取所需信息。以下是一个基本步骤: 1. **安装必要的库**:首先需要安装`requests`, `beautifulsoup4`以及可能需要处理JavaScript渲染内容的`selenium`库。 ```bash pip install requests beautifulsoup4 # 如果有需要处理JS渲染,可以安装: pip install selenium ``` 2. **发送请求**:使用`requests.get()`函数获取百度新闻首页的HTML。 ```python import requests url = "http://news.baidu.com/" response = requests.get(url) ``` 3. **解析HTML**:使用`BeautifulSoup`解析返回的HTML,找到包含新闻链接、标题等元素的部分。 ```python from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, 'html.parser') articles = soup.find_all('div', class_='list-item') # 示例中的类名可能会变化,需要根据实际页面结构查找 ``` 4. **提取数据**:遍历`articles`并从中提取出需要的信息,如链接、标题、发布时间等。 ```python for article in articles: link = article.find('a')['href'] title = article.h3.text pub_time = article.time['datetime'] # 时间节点可能也不同,需要调整 print(f"标题: {title}\n链接: {link}\n发布时间: {pub_time}\n") ``` 5. **保存或进一步处理**:如果想将数据保存到文件或数据库,可以用pandas库或者其他方式。 注意:在实际操作中,你需要遵守站的Robots协议,并尊重版权,不要频繁地爬取同一页面以免造成服务器压力。此外,一些站可能使用反爬机制,如验证码、IP限制等,这需要更复杂的策略应对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值