Python与爬虫入门实践——简易搜狐新闻爬虫01

编程入门 行业动态 更新时间:2024-10-07 06:44:32

Python与<a href=https://www.elefans.com/category/jswz/34/1770264.html style=爬虫入门实践——简易搜狐新闻爬虫01"/>

Python与爬虫入门实践——简易搜狐新闻爬虫01

Python与爬虫入门实践——简易搜狐新闻爬虫01

写在前面:

笔者在寒假期间进行了一些简短的实训,主要内容包括简单的爬虫和简单的人脸识别算法,由于时间有限,对于python也是第一次详细学习,功能较为简单,提供给入学者参考,帮助大家进入py的世界,若有不正确或不明确的地方欢迎指正。

以下是一个简单爬虫项目所需要的基本内容,整体的项目代码参考另一片文章:

Python与爬虫入门实践——简易搜狐新闻爬虫02

                                                                                                                                                                             

一、爬虫介绍

爬虫的基本原理

爬虫是什么?

从互联网中抓取数据的程序

搜索引擎

先准备一些网站---找到更多网站---搜集每个页面的数据---保存到服务器中(数据库)

爬虫本质是模拟浏览器访问网页的过程

HTTP/HTTPS

从网站服务器上获取页面,网页传输的是源代码/文件

网页中的三个元素

HTML超文本标记语言

节点上的数据

标签的属性

img、href标签

文本

特殊属性

Id、class

css

控制样式

JavaScript

事件驱动

ajax网页异步技术,网站的接口化又称前后端分离(页面相关的东西单独处理,数据由单独的接口提供Web API 数据格式:JSON格式/XML格式)

爬虫编写

获取源代码

网页中提取数据

HTTP状态码

状态码有助于我们判断编写的程序是否可以正常连接上指定网站

参考资料:

二、爬虫编写

1.访问目标网站

urllib库提供了访问HTTP协议的工具

#urllib库提供了访问HTTP协议的工具
import urllib.request
from urllib import request#获取一个站点的html源码
response=request.urlopen("/")
print(response.geturl())
print(response.info())
print(response.getcode())#得到状态码

 

结果如下:

 

 2.伪装请求头

 

有时候请求头会被网站识别,他会拒绝我们访问,这是网站的反爬机制,我们只要伪装一下,装作我们是普通用户就可以通过检测了

from urllib import request
from urllib.request import Request
#beautifulsoup
url=''
#伪装请求头
headers={'User-Agent':' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}req=Request(url, headers=headers)response=request.urlopen(req)
print(response.read().decode('utf-8'))

 

3.安装beautifulsoup

beautifulsoup可以帮助我们提取网页中html标签,来进一步提取我们想要的元素

pip install beautifulsoup4

 

 

 

 安装完成后可以看到新的包出现

4.爬取新闻标题和内容

查询标题

from urllib import request
from urllib.request import Request
from bs4 import BeautifulSoup
url='=0?code=61f919a88328210f408c3e188c241d16'headers={'User-Agent':' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}req=Request(url, headers=headers)response=request.urlopen(req)soup = BeautifulSoup(response.read(),'html.parser')
print(soup.h1)#元素选择器
#信息的获取
print(soup.h1.name)#标签名
print(soup.title.string)#标签内的字符串
h1=soup.h1
#去掉空格、换行
print(h1.contents[0])#
newstitle = h1.contents[0]
newstitle=newstitle.replace(' ','')
newstitle=newstitle.replace('\n','')
print(newstitle)

查询内容

article=soup.article
ps=article.contents
#遍历子节点,筛选文字信息
for p in ps:if p.string:print(p.string)

 

这是对于一个新闻内容页的爬取:=0?code=61f919a88328210f408c3e188c241d16

5.爬取信息保存数据库

这里用到的是sqlite数据库

保存收集的数据

1.保存到文件中

文本csv json 保存方便,查询不便

2.保存到服务器

可以保存海量数据

3.保存到数据库中

查询方便,速度快

sqlite数据库

基于文件

创建emp

emp

id 自增主键

name 文本

sex 文本

#创建数据库
import sqlite3
#数据库的连接,参数:数据库文件的名字,如果文件不存在,自动创建文件
conn=sqlite3.connect('mydb.db')
#创建数据表 执行一段sql
#创建执行对象
cor=conn.cursor()
#调用执行对象
cor.execute('''create table emp(id INTEGER  PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,sex TEXT NOT NULL)
''')
#提交
connmit()
#关闭数据库连接
conn.close()

 

 

有绿色箭头的DB按钮是同步刷新,有时出现数据库结果和实际结果不一致的时候可以刷新一下试试

有关数据库的详细代码如下:

 

#创建数据库
import sqlite3
#数据库的连接,参数:数据库文件的名字,如果文件不存在,自动创建文件
def creat_table():conn=sqlite3.connect('mydb.db')#创建数据表 执行一段sql#创建执行对象cor=conn.cursor()#调用执行对象cor.execute('''create table emp(id INTEGER  PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,sex TEXT NOT NULL)''')#提交connmit()#关闭数据库连接conn.close()
#增删改查
def add():conn = sqlite3.connect('mydb.db')cor = conn.cursor()cor.execute('''insert into emp (name, sex)values ('赵四','男')''')connmit()conn.close()
# if __name__=='__main__':
#     add()
def query():conn = sqlite3.connect('mydb.db')cor = conn.cursor()result=cor.execute('''select * from emp''')ls=[]for row in result:# print(row[0])# print(row[1])# print(row[2])ls.append(row)#print(result)connmit()return lsconn.close()
if __name__=='__main__':ls = query()for row in ls:print(row)
#删除语句delete from emp where id=1
#修改语句update emp set name='xiaoma',sex='女'

 

 

 

更多推荐

Python与爬虫入门实践——简易搜狐新闻爬虫01

本文发布于:2024-02-13 13:24:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1758781.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:爬虫   简易   入门   搜狐新闻   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!