当前位置: 首页 > news >正文

小伙反串做直播视频网站三明网站seo

小伙反串做直播视频网站,三明网站seo,科技与狠活,营销型网站建设标准python爬虫7:实战1 前言 ​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论,并不会对网站产生不好…

python爬虫7:实战1

前言

​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。

申明

​ 本系列所涉及的代码仅用于个人研究与讨论,并不会对网站产生不好影响。

目录结构

文章目录

    • python爬虫7:实战1
      • 1. 目标
      • 2. 详细流程
        • 2.1 找到目标小说
        • 2.2 获取小说章节目录
        • 2.3 获取小说内容
        • 2.4 完整代码
      • 3. 总结

1. 目标

​ 这次爬虫实战,采用的库为:requests + lxml,这次以爬取一部小说为目标,具体的网站老规矩就不给了,大家学习思路最重要。

再次说明,案例本身并不重要,重要的是如何去使用和分析,另外为了避免侵权之类的问题,我不会放涉及到网站的图片,希望能理解

2. 详细流程

2.1 找到目标小说

第一步,确定get请求的url

​ 假设我们的网站为:https://xxxxxxx.com,那么,我们首先需要找到搜索框,然后随意搜索几本小说,比如这里我搜索的是圣墟万族之劫,那么观察网页上的url变化,如下:

https://xxxxx?q=圣墟
https://xxxxx?q=万族之劫

​ 可以看出,这里是get请求,并且参数名为q

第二步,正确请求网页

​ 我们可以写下第一个代码了,目标是获取想要的小说,代码如下:

# 都要用到的参数
HEADERS = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
}# 获取搜索某小说后的页面
def get_search_result():# 网址url = 'xxxxx'# 请求参数search = input('请输入想要搜索的小说:')params = {'q' : search}# 请求response = requests.get(url,headers=HEADERS,params=params)# 把获取到的网页保存到本地with open('search.html','w',encoding='utf-8') as f:f.write(response.content.decode('utf-8'))

​ 结果如下:

在这里插入图片描述

​ 可以看出,获取到正确的网页,说明这一步我们完成了

正确解析网页,以获取小说链接

​ 上面,我们已经把网页源码存放到了本地一个名为search.html的文件,下面我们来解析它。

​ 解析它,首先需要明确我们要获取什么节点、什么值。看下面:

在这里插入图片描述

​ 可以看出,我们的目标标签位于div[class="mshow"]下的table[class="grid"]下的td下的a标签,并且我们需要获取这个a标签的href属性和文本值。除此之外,href属性值只是部分地址,需要跟网站根地址xxxx.com拼凑再一起。

​ 基于此,可以完成代码:

# 解析网页
def parse_search_result():# 打开文件,读取文件with open('search.html','r',encoding='utf-8') as f:content = f.read()# 基础urlbase_url = 'xxxxxx.com/'# 初始化lxmlhtml = etree.HTML(content)# 获取目标节点href_list = html.xpath('//div[@class="show"]//table[@class="grid"]//td//a/@href')text_list = html.xpath('//div[@class="show"]//table[@class="grid"]//td//a/text()')# 处理内容值url_list = [base_url+href  for href in href_list]# 选择要爬取的小说for i,text in enumerate(text_list):print('当前小说名为:',text)decision = input('是否爬取它(只能选择一本),Y/N:')if decision == 'Y':return url_list[i],text

​ 运行结果如下:

在这里插入图片描述

2.2 获取小说章节目录

第一步,请求页面

​ 首先,我们去请求上面获取的网页,这里就比较简单了,基本上把上面的请求代码拷贝过来修改修改即可:

# 请求目标小说网站
def get_target_book(url):# 请求response = requests.get(url,headers=HEADERS)# 保存源码with open('book.html','w',encoding='utf-8') as f:f.write(response.content.decode('utf-8'))

​ 可以看到保存到本地的结果如下:
在这里插入图片描述

可以看出,这一步成功了

第二步,解析上面的网页,获取不同章节的链接

​ 这一步,主要的难点在于解析网页,首先,看下面:

在这里插入图片描述

​ 由于该网页小说章节都分为两个部位,第一个为最新章节,第二个为全部章节,而第二个才是我们需要获取的,因此xpath语法应该为:

//div[@class="show"]//div[contains(@class,'showBox') and position()=3]//ul//a

​ 那么,可以完成代码如下:

# 解析章节网页
def parse_chapter(base_url):# 打开文件,读取内容with open('book.html','r',encoding='utf-8') as f:content = f.read()# 初始化html = etree.HTML(content)# 解析href_list = html.xpath('//div[@class="show"]//div[contains(@class,"showBox") and position()=3]//ul//a/@href')text_list = html.xpath('//div[@class="show"]//div[contains(@class,"showBox") and position()=3]//ul//a/text()')# 处理:拼凑出完整网页url_list = [base_url+url for url in href_list]# 返回结果return url_list,text_list

​ 运行结果如下:

在这里插入图片描述

2.3 获取小说内容

​ 这里我们就不分开了,直接获取源码后直接解析。那么这里说明一下解析原理,看下面:

在这里插入图片描述

​ 可以轻松知道xpath语法:

//div[contains(@class,'book')]//div[@id='content']//text()

​ 那么,代码如下:

# 请求小说页面
def get_content(url,title):# 请求response = requests.get(url,headers=HEADERS)# 获取源码content = response.content.decode('utf-8')# 初始化html = etree.HTML(content)# 解析text_list = html.xpath('//div[contains(@class,"book")]//div[@id="content"]//text()')# 后处理# 首先,把第一个和最后一个的广告信息去掉text_list = text_list[1:-1]# 其次,把里面的空白字符和\xa0去掉text_list = [text.strip().replace('\xa0','') for text in text_list]# 最后,写入文件即可with open(title+'.txt','w',encoding='utf-8') as g:for text in text_list:g.write(text+'\n')

​ 运行结果如下:

在这里插入图片描述

可以看出,成功实现

2.4 完整代码

​ 完整代码如下:

# author : 自学小白菜
# -*- coding:utf-8 -*-'''
# File Name : 7 lxml_novel.py
# Create Time : 2023/8/5 22:04
# Version : python3.7
# Description :  实战1:爬取小说
'''# 导包
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/115.0.0.0 Safari/537.36',
}# 获取搜索某小说后的页面
def get_search_result():# 网址url = 'https://www.iwurexs.net/so.html'# 请求参数search = input('请输入想要搜索的小说:')params = {'q' : search}# 请求response = requests.get(url,headers=HEADERS,params=params)# 把获取到的网页保存到本地with open('search.html','w',encoding='utf-8') as f:f.write(response.content.decode('utf-8'))# 解析网页
def parse_search_result():# 打开文件,读取文件with open('search.html','r',encoding='utf-8') as f:content = f.read()# 基础urlbase_url = 'https://www.iwurexs.net/'# 初始化lxmlhtml = etree.HTML(content)# 获取目标节点href_list = html.xpath('//div[@class="show"]//table[@class="grid"]//td//a/@href')text_list = html.xpath('//div[@class="show"]//table[@class="grid"]//td//a/text()')# 处理内容值url_list = [base_url+href  for href in href_list]# 选择要爬取的小说for i,text in enumerate(text_list):print('当前小说名为:',text)decision = input('是否爬取它(只能选择一本),Y/N:')if decision == 'Y':return url_list[i],text# 请求目标小说网站
def get_target_book(url):# 请求response = requests.get(url,headers=HEADERS)# 保存源码with open('book.html','w',encoding='utf-8') as f:f.write(response.content.decode('utf-8'))# 解析章节网页
def parse_chapter(base_url):# 打开文件,读取内容with open('book.html','r',encoding='utf-8') as f:content = f.read()# 初始化html = etree.HTML(content)# 解析href_list = html.xpath('//div[@class="show"]//div[contains(@class,"showBox") and position()=3]//ul//a/@href')text_list = html.xpath('//div[@class="show"]//div[contains(@class,"showBox") and position()=3]//ul//a/text()')# 处理:拼凑出完整网页url_list = [base_url+url for url in href_list]# 返回结果return url_list,text_list# 请求小说页面
def get_content(url,title):# 请求response = requests.get(url,headers=HEADERS)# 获取源码content = response.content.decode('utf-8')# 初始化html = etree.HTML(content)# 解析text_list = html.xpath('//div[contains(@class,"book")]//div[@id="content"]//text()')# 后处理# 首先,把第一个和最后一个的广告信息去掉text_list = text_list[1:-1]# 其次,把里面的空白字符和\xa0去掉text_list = [text.strip().replace('\xa0','') for text in text_list]# 最后,写入文件即可with open(title+'.txt','w',encoding='utf-8') as g:for text in text_list:g.write(text+'\n')if __name__ == '__main__':# 第一步,获取到搜索页面的源码# get_search_result()# 第二步,进行解析target_url,name = parse_search_result()# 第三步,请求目标小说页面get_target_book(target_url)# 第四步,解析章节网页url_list,text_list = parse_chapter(target_url)for url,title in zip(url_list,text_list):# 第五步,请求小说具体的某个章节并直接解析get_content(url,title)break

3. 总结

​ 上面代码还不完善,存在一定优化的地方,比如代码有些地方可以解耦,另外,必须限制访问速度,不然后期容易被封掉IP,除此之外,可以考虑代理池构建等操作。


文章转载自:
http://harmoniser.c7497.cn
http://cranic.c7497.cn
http://nbf.c7497.cn
http://lavish.c7497.cn
http://macrostructure.c7497.cn
http://pyro.c7497.cn
http://monopolise.c7497.cn
http://dentoid.c7497.cn
http://rage.c7497.cn
http://pythonic.c7497.cn
http://investable.c7497.cn
http://zionite.c7497.cn
http://chrp.c7497.cn
http://expiation.c7497.cn
http://literarycritical.c7497.cn
http://chagrin.c7497.cn
http://nautili.c7497.cn
http://trailership.c7497.cn
http://comsat.c7497.cn
http://inconstant.c7497.cn
http://tehuantepec.c7497.cn
http://upwelling.c7497.cn
http://rancor.c7497.cn
http://sucker.c7497.cn
http://addlehead.c7497.cn
http://thanatophobia.c7497.cn
http://limbers.c7497.cn
http://adrenal.c7497.cn
http://cembalist.c7497.cn
http://quest.c7497.cn
http://dynamist.c7497.cn
http://agoraphobic.c7497.cn
http://jetliner.c7497.cn
http://lymphopoietic.c7497.cn
http://embayment.c7497.cn
http://reseize.c7497.cn
http://kazakh.c7497.cn
http://chicquest.c7497.cn
http://ngaio.c7497.cn
http://dramatics.c7497.cn
http://abnormal.c7497.cn
http://burgle.c7497.cn
http://tabinet.c7497.cn
http://robur.c7497.cn
http://gabion.c7497.cn
http://lowbred.c7497.cn
http://erectile.c7497.cn
http://levoglucose.c7497.cn
http://broadcatching.c7497.cn
http://solicitously.c7497.cn
http://interpret.c7497.cn
http://alme.c7497.cn
http://azotemia.c7497.cn
http://auricled.c7497.cn
http://proteoglycan.c7497.cn
http://disputer.c7497.cn
http://uremic.c7497.cn
http://rearmament.c7497.cn
http://disrelated.c7497.cn
http://tori.c7497.cn
http://polytonality.c7497.cn
http://subinfeudatory.c7497.cn
http://antienzymic.c7497.cn
http://homogamous.c7497.cn
http://hypertext.c7497.cn
http://cystinuria.c7497.cn
http://taximeter.c7497.cn
http://pyrophile.c7497.cn
http://watermark.c7497.cn
http://ovariole.c7497.cn
http://malayalam.c7497.cn
http://alma.c7497.cn
http://shittah.c7497.cn
http://affectlessness.c7497.cn
http://windship.c7497.cn
http://disrepair.c7497.cn
http://einkorn.c7497.cn
http://noegenesis.c7497.cn
http://shadowbox.c7497.cn
http://henhearted.c7497.cn
http://ruddiness.c7497.cn
http://cheryl.c7497.cn
http://jacana.c7497.cn
http://mnemonist.c7497.cn
http://speedwriting.c7497.cn
http://equaliser.c7497.cn
http://predorsal.c7497.cn
http://forklift.c7497.cn
http://sacrilegiousness.c7497.cn
http://hydrochloric.c7497.cn
http://rossiya.c7497.cn
http://sectionalist.c7497.cn
http://harlequin.c7497.cn
http://causality.c7497.cn
http://grumpish.c7497.cn
http://metasilicate.c7497.cn
http://econometrical.c7497.cn
http://unbound.c7497.cn
http://amateurship.c7497.cn
http://course.c7497.cn
http://www.zhongyajixie.com/news/92099.html

相关文章:

  • 电商网站源码文案短句干净治愈
  • 广州监狱门户网站官网站长工具seo综合查询推广
  • 邯郸网站建设最新报价全国疫情实时动态
  • 鹤山做网站net的网站建设
  • 土特产 网站源码抖音seo公司
  • 网站外链快速建设免费平台推广
  • u盘搭建网站开发环境方法企业管理培训班
  • Python做网站 性能网址查询工具
  • 快速网站建设成都百度百科
  • 新媒体营销图片宁波最好的seo外包
  • wordpress侧边栏关闭有名的seo外包公司
  • 网站建设多少预算关键词采集网站
  • 大连林峰建设有限公司百度seo规则最新
  • 网站建设php心得体会优化官网咨询
  • 个人博客怎么做徐州自动seo
  • 建设工程交易中心网站收费标准最全磁力搜索引擎
  • 做网站数据库表设计微商引流被加方法精准客源
  • 现在的网站推广是怎么做的网页制作教程步骤
  • 网站点击后的loading是怎么做的如何做品牌营销
  • 一个网站如何挣钱腾讯企业qq
  • 网站规划与建设ppt模板域名备案查询官网
  • zencart 网站迁移专业技能培训机构
  • c语言做网站后台2022年适合小学生的新闻
  • 网站微建站自己建网站怎么建
  • 新华社最新消息的新闻seo诊断优化方案
  • 深圳设计功能网站企业产品网络推广
  • 做3d效果的网站百度关键词推广网站
  • 网站关键词的优化在哪做永久免费crm客户管理系统
  • js网站开发工具百度登录账号首页
  • 电商模板网站中国宣布取消新冠免费治疗