• 大小: 2.2MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-13
  • 语言: Python
  • 标签: python  

资源简介

Python项目案例开发从入门到实战源代码第5章 爬虫应用——校园网搜索引擎

资源截图

代码片段和文件信息

import sys
from collections import deque
import urllib
from urllib import request
import re
from bs4 import BeautifulSoup
import lxml
import sqlite3
import jieba

##safelock=input(‘你确定要重新构建约5000篇文档的词库吗?(y/n)‘)
##if safelock!=‘y‘:
##    sys.exit(‘终止。‘)

url=‘http://www.zut.edu.cn/index/xwdt.htm‘  #‘http://www.zut.edu.cn‘#入口

unvisited=deque()#待爬取链接的列表,使用广度优先搜索
visited=set()    #已访问的链接集合
unvisited.append(url)
#unvisited.append(‘http://www.zut.edu.cn/index/xwdt.htm‘)
conn=sqlite3.connect(‘viewsdu.db‘)
c=conn.cursor()
#在create table之前先drop table是因为我之前测试的时候已经建过table了,所以再次运行代码的时候得把旧的table删了重新建
c.execute(‘drop table doc‘)
c.execute(‘create table doc (id int primary keylink text)‘)
c.execute(‘drop table word‘)
c.execute(‘create table word (term varchar(25) primary keylist text)‘)
conn.commit()
conn.close()

print(‘***************开始!***************************************************‘)
cnt=0
print(‘开始。。。。。 ‘ )
while unvisited:
    url=unvisited.popleft()
    visited.add(url)
    cnt+=1
    print(‘开始抓取第‘cnt‘个链接:‘url)

    #爬取网页内容
    try:
        response=request.urlopen(url)
        content=response.read().decode(‘utf-8‘)
        
    except:
        continue

    #寻找下一个可爬的链接,因为搜索范围是网站内,所以对链接有格式要求,这个格式要求根据具体情况而定

    #解析网页内容可能有几种情况这个也是根据这个网站网页的具体情况写的
    soup=BeautifulSoup(content‘lxml‘)
    all_a=soup.find_all(‘a‘{‘class‘:“c67214“})   #本页面所有的新闻链接
    for a in all_a:
        #print(a.attrs[‘href‘])
        x=a.attrs[‘href‘]           #网址
        if re.match(r‘http.+‘x):   #排除是http开头,而不是http://www.zut.edu.cn网址
            if not re.match(r‘http\:\/\/www\.zut\.edu\.cn\/.+‘x):
                continue
        if re.match(r‘\/info\/.+‘x):       #“/info/1046/20314.htm“
            x=‘http://www.zut.edu.cn‘+x
        elif re.match(r‘info/.+‘x) :       #“info/1046/20314.htm“
            x=‘http://www.zut.edu.cn/‘+x 
        elif re.match(r‘\.\.\/info/.+‘x):  #“../info/1046/20314.htm“ 
            x=‘http://www.zut.edu.cn‘+x[2:]
        elif re.match(r‘\.\.\/\.\.\/info/.+‘x):  #“../../info/1046/20314.htm“ 
            x=‘http://www.zut.edu.cn‘+x[5:]
        #print(x)
        if (x not in visited) and (x not in unvisited):            
                unvisited.append(x)
                
    a=soup.find(‘a‘{‘class‘:“Next“})   #下一页

    if a!=None:
        x=a.attrs[‘href‘]           #网址
        if re.match(r‘xwdt\/.+‘x):
            x=‘http://www.zut.edu.cn/index/‘+x
        else:
            x=‘http://www.zut.edu.cn/index/xwdt/‘+x
        if (x not in visited) and (x not in unvisited):            
           unvisited.append(x)    
    
    title=soup.title
    article=soup.find(‘div‘class_=‘c67215_content‘id=‘vsb_newscontent‘)
    author=soup.find(‘span‘class_=“authorstyle67215“)  #作者
    time=soup.find(‘span‘class_=“timestyle67215“)
    if title==None and article==None and author==None:
        print(‘无内容的页面。‘)
        continue

    elif article==Non

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5604  2018-04-05 16:37  第5章  爬虫应用——校园网搜索引擎\search_engine_build-2.py

     文件       2146  2018-08-05 11:13  第5章  爬虫应用——校园网搜索引擎\search_engine_use.py

     文件    3912704  2018-04-05 16:58  第5章  爬虫应用——校园网搜索引擎\viewsdu - 副本.db

     文件    4865024  2018-08-05 11:05  第5章  爬虫应用——校园网搜索引擎\viewsdu.db

     目录          0  2018-11-07 19:54  第5章  爬虫应用——校园网搜索引擎

----------- ---------  ---------- -----  ----

              8785478                    5


评论

共有 条评论