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

网站开发的相关技能如何申请开通网站

网站开发的相关技能,如何申请开通网站,wordpress描述插件,公司网站开发策划书今天因为需要做了一个爬取知网博硕士论文及中国专利的爬虫#xff0c;在制作的过程中遇到了不少坑#xff0c;在网上查资料时都是很老的资源#xff0c;在现在知网的反爬虫下不起作用#xff0c;所以我来写这篇文章来供大家参考。#xff08;这篇文章主要介绍通过改写获得…今天因为需要做了一个爬取知网博硕士论文及中国专利的爬虫在制作的过程中遇到了不少坑在网上查资料时都是很老的资源在现在知网的反爬虫下不起作用所以我来写这篇文章来供大家参考。这篇文章主要介绍通过改写获得的网址来避开知网的反爬机制完成普通文章和以表格为主体的html代码的信息的抓取 这篇代码主要是抓取指望中关键字为保护渣的博硕士论文以及中国专利信息其中中国专利信息较难抓取主要是因为专利的信息在表格中而表格又是动态的代码末尾处有提示如何改代码你可以通过改写代码中key的值改变抓取内容的关键字也可以更改抓取的文献内容代码后面有介绍。 代码如下。代码中每一步都注释的很清楚 # -*- coding: utf-8 -*- import time import re import random import requests import pymysql from bs4 import BeautifulSoupheaders {Accept:text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8,Accept-Encoding:gzip, deflate, sdch,Accept-Language:zh-CN,zh;q0.8,Connection:keep-alive,Host:www.cnki.net,Referer:http://search.cnki.net/search.aspx?q%E4%BD%9C%E8%80%85%E5%8D%95%E4%BD%8D%3a%E6%AD%A6%E6%B1%89%E5%A4%A7%E5%AD%A6rankrelevantclusterzykvalCDFDTOTAL,Upgrade-Insecure-Requests:1,User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 }headers1 {User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36,Connection:keep-alive,Cookie:Ecp_ClientId6200426191000935476; SID_sug111054; cnkiUserKeyc53f825c-b99b-59f4-a41e-dc2604699e98; ASP.NET_SessionIdut2fqnilpd51bjijpcaxzyfz; SID_search201087; UM_distinctid171b64edb7c40c-07684554dd81b4-9393265-144000-171b64edb7d643; Ecp_IpLoginFail200427221.192.179.83; CNZZDATA2643871cnzz_eid%3D980108062-1587900042-%26ntime%3D1587975276; CNZZDATA3636877cnzz_eid%3D1649504557-1587900840-%26ntime%3D1587975276,Host:search.cnki.net,Referer:http://search.cnki.net/search.aspx?q%e4%bf%9d%e6%8a%a4%e6%b8%a3rankrelevantclusterallval,Upgrade-Insecure-Requests:1,} #注意这里一定要设置两个请求头知网有双重检查用自己的也行去网上找也行。connection pymysql.connect(localhost, root, 1234567, zhiwang,charsetutf8) cursor connection.cursor() # 打开mysql数据库的连接。#下面定义一个函数来获得每一篇文章的链接并放在一个列表中。 def get_url_list(start_url):depth 10#这里可以设置爬取每一种文献的页数一页有15条信息url_list []i1for i in range(depth):try:url start_url p str(i * 15)#分析页面网址特征发现共同点例如http://search.cnki.net/Search.aspx?q%E4%BF%9D%E6%8A%A4%E6%B8%A3rankrelevantclusterzykvalCCNDTOTALp15里的15决定了你所在的页面。search requests.get(url.replace(\n, ), headersheaders1)#注意设置请求头。soup BeautifulSoup(search.text, html.parser)for art in soup.find_all(div, class_wz_tab):if art.find(a)[href] not in url_list:rule .*aspx?(.*)url1 re.findall(rule, art.find(a)[href])url_ture https://kns.cnki.net/KCMS/detail/detail.aspx url1[0]url_ url_tureurl_list.append(url_)#将获取的网址加入到网址列表中。print(url_)#if下面的语句很重要这里是将获得的网址进行转换换成我们可以使用的网址。print(爬取第 str(i) 页成功)time.sleep(random.randint(1, 3))#设置睡眠时间防止被服务器屏蔽。except:print(爬取第 str(i) 页失败)return url_list#下面定义一个函数来从文章页面获得我们要提取的信息。 def get_data(url_list, wordType):try:for url in url_list:if url pymysql.NULL or url :continuetry:html requests.get(url.replace(\n, ), headersheaders)print(html)soup BeautifulSoup(html.text, html.parser)except:print(获取网页失败)try:if soup is None:continue#获取标题title soup.find(title).get_text().split(-)[0]# 获取摘要summary 0#用summary0来判断summary是那种文献中的然后提取。try:summary soup.find(span, idChDivSummary).get_text()#博硕士论文中摘要的提取如果不是博硕士论文则不会赋值接下来会进入中国专利的论文提取。except:summary0if summary 0:relu .*?td.*?(.*)/tda soup.find_all(td, attrs{class: checkItem, colspan: 3})summary str(a[2]).replace(\n, ).replace( , )ruletd.*?(.*?)/tdsummary re.findall(rule,summary)[0]#中国专利的摘要提取if summary 0:summary 摘要类型不符合要求#特殊类型处理except:print(部分获取失败)passprint(【Title】 title)print(【url】url)print(【summary】 summary)cursor.execute(INSERT INTO yingwen VALUES (%s,%s, %s), (title, url,summary))#将获取的信息放到数据库里。connection.commit()print(爬取完毕)finally:print()if __name__ __main__:try:for wordType in [CMFDTOTALCDFDTOTALSCPD]:#这个列表中放的是你想要爬取的文献类型博士论文或是中国专利。代码的末尾有对照的信息。key保护渣#改变这里可以改变你爬取文献的关键字。start_url http://search.cnki.net/search.aspx?q%srankrelevantclusterzykval%s % (key,wordType)#拼接网址url_list get_url_list(start_url)print(开始爬取)get_data(url_list, wordType)print(一类数据爬取完毕)print(全部爬取完毕)finally:connection.close()#抓取完成关闭连接。CDFDTOTAL博士论文CMFDTOTAL硕士论文SCPD 中国专利在爬取时要注意的的问题 首先要设置双请求头请求头中信息尽量完整。我们在网站中获得信息页的网址并不是真正的网址例如那我们从页面中获得的详情页的网址如这个网址 http://epub.cnki.net/grid2008/brief/detailj.aspx?filename1019146259.nhdbnameCDFDLAST2019 这个是我们获得的网址但是我们点开之后会发现这个链接并不能直接进入详情页而是跳转到了首页 这说明我们需要改网址才能进入详情页分析网址之后发现真正决定信息是后缀中的 filename1019146259.nhdbnameCDFDLAST2019 所以我们只要改变链接的前缀就能得到详情页真正的网址了分析之后得到详情页真正的网址是 https://kns.cnki.net/KCMS/detail/detail.aspx?filename1019146259.nhdbnameCDFDLAST2019 打开之后 进而得到了真正的代码。 还有在爬取专利的模块时原链接 http://dbpub.cnki.net/grid2008/dbpub/detail.aspx?filenameCN105750519AdbnameSCPD2016 打开之后是这样的 然而在爬取时我们会发现这个网址下的页面中的摘要再爬取时频繁的发生无响应的情形导致无法爬取好像是因为这个摘要中的链接是动态的这是知网的反爬虫在捣乱但是我偶然发现如果用正则表达式将网址改为 https://kns.cnki.net/KCMS/detail/detail.aspx?filenameCN105750519AdbnameSCPD2016 这时打开的页面是这样的 在这个网址下爬取就不会遇到反爬的情况我们简单的用beautifulsoup来爬取内容并利用正则表达式来截取内容就好了。 3.爬虫的时候要设置间歇时间爬取过快可能会被封ip. 总结一下抓取知网的难点在与它的反爬机制首先我们应该设置双请求头重点在于网址的修改我们要把我们直接爬取到的网址进行修改后才能用于使用对网址进行分析时要注意网址的后缀例如aspx?filenameCN105750519AdbnameSCPD2016决定了打开网址的内容而网址的前缀例如https://kns.cnki.net/KCMS/detail/detail.aspx?决定了打开的位置我们要通过改变前缀来更改网址后缀不能改从而完成信息的爬取网址分析这一部分有些词语非专业语言 希望这篇文章对你有用如果在阅读中遇到了任何的问题欢迎留言讨论。
http://www.dnsts.com.cn/news/208906.html

相关文章:

  • 北京网站建设 知乎最新新闻热点话题
  • 网站维护提示怎么做品牌策划包括哪些内容
  • 网站建设要哪些人做网站必需要在工商局备案吗
  • 枣阳城乡建设局网站欧盟理事会
  • 建立自己的网站怎么样做wordpress免插件跳转
  • 河北网站开发联系电话互动型网站成功例子
  • 网站做多个页面网站的设计风格与特点
  • 医疗网站前置审批wordpress移动顶部菜单
  • 做美妆网站的关键词商城县
  • 天津黑曼巴网站建设宿迁司法拍卖房产网
  • 白酒网站模板wordpress 教程类主题
  • 周杰伦做的广告网站网站备案的要求是什么样的
  • 旅游网站建设品牌推广的方式有哪些
  • 音乐分享网站开发html5网站建设中模板
  • seo工具助力集群式网站升级杭州做网站价格
  • 网站建设平台ui确认书重庆门户网站推广方案
  • 网站建设简单流程网站建设图片怎么切
  • 接项目做的网站WordPress外链自动转内链
  • 企业网站排名优化哪家好6做网站
  • 做网站难不难网站开发人员的职业要求
  • 奉化网站建设报价网站上传的图片怎么做的清晰度
  • 网站建设亼仐团深圳装修网
  • 建设网站需要几个文件夹产品宣传网站模板
  • 建设工程安全员教育网站自己做网站卖什么
  • 网站栏目建设方案亚马逊做超链接的网站
  • 素材网站的下载服务器怎么做拼多多怎么申请开店
  • 免费做公益网站网站租用 凡
  • 建设网站需要多长时间做围棋题网站
  • 学校网站代码it前端是做网站的
  • 南宁会制作网站的技术人员为了推广公众号可以采取的方法有