先下载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语句,但是最好是自己敲,毕竟也不难