爬虫练手 未登录状态爬取知乎发现页的热门问题和答案

 用requests将网页源代码获取下来,然后使用lxml解析库解析

import os
import requests
from lxml import etree

# 未登录状态下,爬取知乎发现页的热门

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
                  ' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
}

session = requests.Session()
response = session.get("https://www.zhihu.com/explore", headers=headers)
html = etree.HTML(response.text, etree.HTMLParser())
titles = html.xpath('//*[@id="js-explore-tab"]/div[1]/div/div/h2/a/text()')
answers = html.xpath('//*[@id="js-explore-tab"]/div[1]/div/div/div/div[4]/textarea[@class="content"]/text()')

print(type(titles[0])) 
# 类型是<class 'lxml.etree._ElementUnicodeResult'>
# _ElementUnicodeResult在python中是字符串的一种
# 在python3中,字符串就是指以unicode编码规则存储的数据
# 而以其他方式如utf-8,ASCII编码方式存储的数据称为bytes类型

with open('zhihu.txt', 'w+', encoding='utf-8') as file:
    for item in zip(titles, answers):
        file.write(item[0] + item[1])
        file.write('\n' + '*' * 50)
print("end")

 

爬取知乎的“发现面上的热门话题并获取问题答案是一个网络抓取任务,通常需要使用Python等编程语言配合如BeautifulSoup、Scrapy或者Selenium这样的库。以下是简要步骤: 1. **安装必要的库**:首先需要安装`requests`用于发送HTTP请求,`lxml`或`bs4`处理HTML文档,以及`selenium`如果网站有JavaScript动态加载内容。 ```bash pip install requests lxml beautifulsoup4 selenium (如果有JavaScript) ``` 2. **设置代理**:由于爬虫可能会因为频率过高而被封禁,所以可能需要设置代理服务器。 3. **模拟登录或接受cookies**:如果知乎有反爬机制,可能需要登录或者处理cookies。 4. **编写脚本**:使用Python代码访问知乎发现面,并解析HTML获取热点话题及其问题答案。如果是纯静态面,可以使用BeautifulSoup直接提取;如果涉及JavaScript,可能需要用Selenium打开浏览器渲染面。 ```python # 示例代码(仅作演示,实际操作需处理更多细节) import requests from bs4 import BeautifulSoup url = 'https://www.zhihu.com/discover' response = requests.get(url, proxies=your_proxies) # 使用代理 soup = BeautifulSoup(response.text, 'lxml') topics = soup.find_all('div', class_='TopicItem') # 查找热点话题元素 for topic in topics: question = topic.find('a', class_='QuestionLink')['href'] answer_link = topic.find('span', class_='AnswerCount').find_next('a')['href'] # 获取答案链接 # 通过请求这两个链接进一步获取问题答案的具体内容 ``` 5. **下载和保存数据**:对于每个问题答案链接,再分别发送GET请求获取详细内容,然后将它们以文本的形式保存到本地文件或数据库。 6. **遵守规定**:在进行网抓取时,务必遵守目标网站的robots.txt规则,并尊重用户隐私。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值