Xpath使用(全家桶)

Xpath使用(全家桶)

先下载lxml,requests,命令是:

pip install lxml
pip install requests

导入模块:

from lxml import etree
import requests

如果发现etree下面有红线,不用管他,只是python解释器没找到etree,但是照样可以使用,然后开始运行,运行不报错,说明安装成功

这里就不单个讲解xpath的使用方法,网上有的是比我教的好的,再着我把曾经用来爬小说代码展示一下,都是最基础的东西,很容易看懂的

import re
import time

import requests
from lxml import etree
from pymongo import MongoClient


class XS(object):
    def __init__(self, fiction_html):
        # 链接mongodb
        self.client = MongoClient('localhost', 27017)
        # 链接BQG数据库
        self.db = self.client['BOOKS']
        # 爬取的网站
        self.url = 'https://www.xsbiquge.com%s' % fiction_html
        # 获取网站html数据
        self.html = requests.get(self.url)
        # 转换成lxml对象
        self.bi_qu_ge_html = etree.HTML(self.html.content.decode())

        self.sort = 1

    def guo_lv(self):
        # 所有文章
        lian_jian = self.bi_qu_ge_html.xpath('//dd//a')

        # 获取小说的名字
        title2 = self.bi_qu_ge_html.xpath("//div[@id='info']/h1/text()")
        # 以小说名字创建集合
        self.db = self.db[title2[0]]
        # 遍历所有文章
        for x in lian_jian:
            print(x)
            # 存储章节标题和内容
            a = {}
            # 获取文章的链接
            href = x.xpath('./@href')
            print(href)
            # 获取文章的标题
            title = x.xpath('./text()')
            # 跳转到这个章节
            url = 'http://www.xbiquge.com' + href[0]
            # url = 'http://www.xbiquge.la' + href[0]

            # 获取章节的html数据
            content_html = requests.get(url)
            # 转换成lxml对象
            bi_qu_ge_html = etree.HTML(content_html.content.decode())
            # 获取文章的内容
            content_list = bi_qu_ge_html.xpath("//div[@id='content']/text()")
            content = ''
            # 遍历文章内容过滤组合
            for x in content_list:
                x = re.sub(r'\xa0|\r|\n', '', x)
                content += x
            # 存储到字典中
            a['title'] = title[0]
            a['content'] = content_list
            a['id'] = str(self.sort)
            a["time"] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

            self.sort += 1
            print(title[0])
            # time.sleep()
            # 添加到数据库
            # self.db.insert_one(a)

    def run(self):
        # 过滤数据
        self.guo_lv()


if __name__ == '__main__':
    # 创建实例对象
    xs = XS("/78_78513/")
    # 执行代码
    xs.run()

谷歌安装Xpath插件

打开谷歌商店,搜索Xpath
在这里插入图片描述
在这里插入图片描述
我的已经下载成功了,如果没下载会显示让你安装,一般情况下一分钟就可以下载成功
打开百度,点击右上角的xpath图标
在这里插入图片描述
在这里插入图片描述
如果有文字显示那么你就成功了
如果不会先xpath语句,教各位一个方便的技巧
在这里插入图片描述
在这里插入图片描述
这样直接生成xpath语句,但是最好是自己敲,毕竟也不难

如果觉得我讲的还行,希望大家给我点个赞,有什么意见可以直接评论,如果看见的话我会回复大家的

猜你喜欢

转载自blog.csdn.net/weixin_44388373/article/details/105955716