爬取分页的标题

本文介绍了使用Python和requests库实现单线程爬虫的过程,目标网站为crowdfunder.com。作者通过简单的代码实现了对网站分页标题的抓取,并讨论了未登录状态下爬取内容的限制。

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

还是跟着极客学院学习爬虫。
今天学习单线程爬虫,老师让爬一个众筹项目网站 https://www.crowdfunder.com。可是由于视频是去年的,视频里老师讲的这个网站的requests method是post,但是今天我查看网站看到的是get(或许我没看对)。
无所谓了,我就看着老师的(反正不是能看懂),自己用最笨的方法搞了个,自动爬取分页码的标题。又由于没有登陆,所以只能爬去部分。所以若是想爬取全部,还要学习如何自动登陆。


# -*- coding: utf-8 -*-
"""
Created on Mon May  9 14:28:45 2016

@author: s
"""

import requests
import re

header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36'}
url = r'https://www.crowdfunder.com/?page=1'

i = 1

#得到分页网址
def newurls():
    global i, html
    newurl = re.sub('page=(\d+)', 'page='+str(i), url, re.S)    
    if i > 7:
        print('The End')
        return
    print(newurl)
    #未登陆,只能提取部分
    html = requests.get(url, headers=header).text
    #print(html)
    titles()
#对每个分页进行标题提取
def titles():
    global i, html
    title = re.findall('class="card-title"(.*?)</div>', html, re.S)
    print(title)
    i += 1
    newurls()

newurls()    
<think>好的,用户现在想知道如何用编程语言或工具爬取新闻标题。我之前给出的回答里用了Python和Selenium的例子,用户可能对动态网页的处理有需求。不过需要先确认目标网站是静态还是动态加载的。静态的话,用Requests和BeautifulSoup更简单高效;动态的话,就得用Selenium或者Playwright了。 用户提到的引用里有提到Selenium爬QQ新闻热榜,还有Scrapy、requests等库。所以需要分情况说明。首先应该解释两种常见的网页类型,然后给出对应的解决方案。同时,用户可能需要具体的代码示例,所以准备静态和动态两种情况的代码。 另外,引用2中提到技术栈包括requests、BeautifulSoup、Scrapy,这些都可以用在静态爬取。而引用1中的Selenium适用于动态。引用3提到新浪新闻爬取,可能涉及分页,所以代码示例里最好包含如何处理分页,比如循环遍历页面。 需要注意合法性,提醒用户遵守robots.txt和法律法规。代码示例要简洁,用户可能不太熟悉,所以注释详细些。比如静态爬取的步骤:发送请求、解析HTML、提取数据、循环分页。动态爬取则要启动浏览器、等待元素加载等。 还要考虑异常处理,比如请求失败的情况,但为了保持代码简洁,可能先不加入,但可以提到。最后,总结不同方法的适用场景,帮助用户选择合适的方法。可能用户后续会问更深入的问题,比如反爬措施,但现在先给出基础方法。</think>根据不同的网页技术特点,这里提供两种主流方法实现新闻标题爬取: ### 一、静态网页爬取方案(使用Requests+BeautifulSoup) ```python import requests from bs4 import BeautifulSoup # 以新浪新闻为例 url = "https://news.sina.com.cn/" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 通过CSS选择器定位标题 titles = soup.select('.news-item') # 根据实际网页结构调整选择器 for item in titles[:10]: # 取前10条 title = item.h2.text.strip() if item.h2 else '' link = item.a['href'] if item.a else '' print(f"标题:{title}\n链接:{link}\n") ``` ### 二、动态网页爬取方案(使用Selenium) ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service service = Service('/path/to/chromedriver') driver = webdriver.Chrome(service=service) try: driver.get("https://news.qq.com/") # 等待动态加载完成 driver.implicitly_wait(10) # 通过XPath定位新闻元素 news_items = driver.find_elements(By.XPATH, '//div[@class="news-list"]//a') for item in news_items[:10]: print(f"标题:{item.text}\n链接:{item.get_attribute('href')}\n") finally: driver.quit() ``` ### 关键步骤说明: 1. **目标分析**:使用浏览器开发者工具(F12) - 查看网络请求确认加载方式 - 定位标题元素的CSS选择器/XPath 2. **反爬处理建议**: - 设置请求头`User-Agent` - 添加请求延迟(静态方案) - 使用无头模式(动态方案) 3. **数据存储**: ```python # 追加写入CSV文件示例 import csv with open('news.csv', 'a', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow([title, link]) ``` **注意事项**: - 遵守网站`robots.txt`协议[^2] - 控制请求频率(建议≥3秒/次) - 动态网页推荐使用`WebDriverWait`显式等待 不同网站的适配需要调整元素选择器,主流新闻网站通常会有反爬机制,建议先从静态网站(如政府类新闻门户)开始练习[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值