requests PyQuery txt储存 知乎

前言: 在书的引导下,尝试了一下PyQuery来爬取知乎内容,这里记录一下

import requests
from pyquery import PyQuery as pq

url = 'https://www.zhihu.com/explore'
headers = {'user-agent':'Mozilla/5.0'}
html = requests.get(url, headers=headers).text

doc = pq(html)
# 有空格的点代表了父子什么的节点内
items = doc('.tab-panel .feed-item').items()
for item in items:
    question = item.find('h2').text()
    # 节点可以不用加. 但是属性内容就要加上.
    author = item.find('.author-link-line').text()
    # 先将content内容全部提取出来,然后再通过pq将其煲汤,最后实现信息提取
    answer = pq(item.find('.content').html()).text()
    # 第一个参数文件名 第二个表示追加的方式 第三个编码方式
    file = open('zhihu.txt', 'a', encoding='utf-8')
    # 用这种方法了一将三个信息都加上而且也比较好看,推荐
    file.write('\n'.join([question, author, answer]))
    file.write('\n' + '='*50 +'\n')
    file.close()

代码优化:

import requests
from pyquery import PyQuery as pq

url = 'https://www.zhihu.com/explore'
headers = {'user-agent':'Mozilla/5.0'}
html = requests.get(url, headers=headers).text

doc = pq(html)
# 有空格的点代表了父子什么的节点内
items = doc('.tab-panel .feed-item').items()
for item in items:
    question = item.find('h2').text()
    # 节点可以不用加. 但是属性内容就要加上.
    author = item.find('.author-link-line').text()
    # 先将content内容全部提取出来,然后再通过pq将其煲汤,最后实现信息提取
    answer = pq(item.find('.content').html()).text()
    # 第一个参数文件名 第二个表示追加的方式 第三个编码方式
    with open('zhihu.txt', 'a', encoding='utf-8') as file:

        file.write('\n'.join([question, author, answer]))
        file.write('\n' + '='*60 +'\n')

成果:
requests PyQuery txt储存 知乎