爬虫-爬取腾讯热点

本文介绍如何使用Selenium和BeautifulSoup进行网页爬取,重点演示了动态加载网站内容的抓取方法,包括设置ChromeDriver、解析HTML、提取热点新闻标题与链接,并将结果存储为CSV文件的过程。

要求

1.了解ajax加载
2.通过chrome的开发者工具,监控网络请求,并分析
3.用selenium完成爬虫
4.实现:用selenium爬取https://news.qq.com/ 的热点精选,热点精选至少爬50个出来,存储成 csv 每一行如下 标号(从1开始),标题,链接,…(前三个为必做,后面内容可以自己加)

import time
from  selenium import webdriver

driver = webdriver.Chrome(executable_path='D:\Anaconda\Scripts\chromedriver.exe')
driver.get("https://news.qq.com")
#使用ajax加载
for i in range(1,100):
    time.sleep(2)
    driver.execute_script("window.scrollTo(window.scrollX, %d);"%(i*200))

from bs4 import BeautifulSoup
html=driver.page_source
#解析html
bsObj=BeautifulSoup(html,"lxml")

jxtits=bsObj.find_all("div",{"class":"jx-tit"})[0].find_next_sibling().find_all("li")

import pandas as pd
res = pd.DataFrame()

print("index",",","title",",","url")
csvRow_index = []
csvRow_title = []
csvRow_url = []
for i,jxtit in enumerate(jxtits):
    try:
        text=jxtit.find_all("img")[0]["alt"]
        csvRow_title.append(text)
    except:
        text=jxtit.find_all("div",{"class":"lazyload-placeholder"})[0].text
        csvRow_title.append(text)
    try:
        url=jxtit.find_all("a")[0]["href"]
        csvRow_url.append(url)
    except:
        print(jxtit)
        csvRow_url.append(url)
    csvRow_index.append(i)
    print(i+1,",",text,",",url) 

import pandas as pd
csv_file = pd.DataFrame()
csv_file['index'] = csvRow_index
csv_file['title'] = csvRow_title
csv_file['url'] = csvRow_url
csv_file.to_csv('csv_file.csv',index=None)
爬取腾讯新闻“要闻”频道“热点精选”模块的前20条数据,你需要使用类似上述的Python网络爬虫技术。这里是一个简化版的示例步骤: 1. **准备工具和库**: - `requests`:用于发送HTTP请求 - `beautifulsoup4`:用于解析HTML文档 - `csv`:用于写入数据到CSV文件 2. **定义URL**: 腾讯新闻热点精选的具体URL可能会有所变化,你可以尝试访问页面,找到正确的API接口或HTML元素位置。假设URL为 `https://news.qq.com/zt/hotnews_special`。 3. **发送请求**: ```python url = "https://news.qq.com/zt/hotnews_special" headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) ``` 4. **解析HTML**: 使用BeautifulSoup解析响应的HTML内容,定位到包含新闻的元素,可能是通过CSS选择器或XPath表达式。 ```python soup = BeautifulSoup(response.text, 'lxml') items = soup.select('.hotnews-item')[:20] # 获取前20个新闻项目 ``` 5. **提取数据**: 从每个新闻项目中提取标题、链接和描述信息。 ```python data = [] for item in items: title = item.select_one('.title').get_text() link = item.select_one('.title a')['href'] desc = item.select_one('.desc').get_text() if item.select_one('.desc') else None data.append([title, link, desc]) ``` 6. **保存到CSV**: 将数据写入CSV文件。 ```python with open('hotnews_special_data.csv', 'w', newline='', encoding='utf-8') as csvfile: writer = csv.writer(csvfile) writer.writerow(['标题', '链接', '描述']) writer.writerows(data) ``` 请注意,实际操作中可能会遇到反爬机制、动态加载内容等问题,可能需要额外处理。同时,务必遵守网站的Robots协议,并确保在合法范围内爬取数据。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值