python网页数据抓取(Python基础知识:函数用于测试程序管理函数的执行顺序例子 )

优采云 发布时间: 2022-01-20 10:12

  python网页数据抓取(Python基础知识:函数用于测试程序管理函数的执行顺序例子

)

  如果服务器能正常响应,就会得到一个Response,就是要获取的页面内容。

  解析内容

  获取的内容可能是HTML、json等格式,可以用页面解析库、正则表达式等进行解析。

  保存数据

  以多种形式保存,可以保存为文本,也可以保存到数据库,或者以特定格式保存文件。

  二.准备工作1.网页路径规则

  从 1 日开始显示

  26日起上映

  2.网址分析

  页面收录250条电影数据,分为10页,每页25条

  各页面URL的区别:最终值=(pages - 1)* 25

  3.分析页面

  使用Chrome开发者工具(F12)分析网页,在Elements下找到需要的数据位置

  在页面中选择一个元素来检查它 Ctrl + Shift + C

  网络下刷新URL后可以看到所有访问请求的时间线

  Headers:发送给浏览器的当前访问信息

  User-Agent:浏览器信息

  需要登录的网页使用 cookie

  4.编码规范

  1.一般Python程序的第一行需要加上

  #-*- coding: utf-8 -*-或者# coding=utf-8

  这允许在代码中收录中文

  2.在Python中,使用函数来实现单个函数或相关函数的代码段,可以提高可读性和代码复用,

  函数块以 def关键词 开头,后跟空格、函数标识符的名称、括号 () 和冒号:

  参数可以用括号传递,函数段缩进(制表符或四个空格,只能选择其中一个),

  return 用于结束函数,可以返回一个值,也可以不带任何表达式(意思是返回None)

  3.可以将main函数添加到Python文件中,用于测试程序

  if __name__ == "__main__":

  适合管理函数的执行顺序

  例子:

  #-*- coding: utf-8 -*-

def main():

print("hello")

if __name__ == "__main__": #当程序执行时

#调用函数

main()

  4.Python用#加注释来解释代码(段)的作用

  三.引入模块1.模块(模块)

  用于对 Python 代码(变量、函数、类)进行逻辑组织,本质上是一个 py 文件,用于提高代码的可维护性。

  Python使用import来导入模块,比如import sys

  例子:

  test1 文件夹中有 t1.py

  def add(a,b):

return a+b

  我想在 test2 文件夹中的 t2.py 中调用 t1 中的函数

  #引入自定义模块

  from test1 import t1

print(t1.add(2,3))

  #介绍系统的模块

  import sys

import os

  #引入第三方模块(这些是本项目要使用的模块)

  import bs4 #网页解析,获取数据

import re #正则表达式,进行文字匹配

import urllib.request,urllib.error #制定URL,获取网络数据

import xlwt #进行excel操作

import sqlite3 #进行SQLite数据库操作

  由于我使用的工具是vs2019,它的第三方模块加载为

  

  在这里输入你要查找的包名,比如bs4

  

  只需点击 pip install bs4

  

  该程序现在

  #-*- coding: utf-8 -*-

from bs4 import BeautifulSoup #网页解析,获取数据

import re #正则表达式,进行文字匹配

import urllib.request,urllib.error #制定URL,获取网络数据

import xlwt #进行excel操作

import sqlite3 #进行SQLite数据库操作

def main():

baseurl="https://movie.douban.com/top250"

#1.爬取网页

datalist=getData(baseurl)

savepath=".\\豆瓣电影Top250.xls" #当前文件夹下

#3.保存数据

saveData(savepath)

#爬取网页

def getData(baseurl):

datelist=[]

#2.逐一解析数据

return datalist

#保存数据

def saveData(savepath):

print("save.....")

if __name__ == "__main__": #当程序执行时

#调用函数

main()

  2.获取数据

  Python一般使用urllib库来获取页面

  获取页面数据

  urllib 测试

  urllib test_ai 的博客 - CSDN 博客

  获取数据获取指定URL的网页内容

  #-*- coding: utf-8 -*-

from bs4 import BeautifulSoup #网页解析,获取数据

import re #正则表达式,进行文字匹配

import urllib.request,urllib.error #制定URL,获取网络数据

import xlwt #进行excel操作

import sqlite3 #进行SQLite数据库操作

def main():

baseurl="https://movie.douban.com/top250?start="

#1.爬取网页

datalist=getData(baseurl)

savepath=".\\豆瓣电影Top250.xls" #当前文件夹下

#3.保存数据

#saveData(savepath)

askURL("https://movie.douban.com/top250?start=")

#爬取网页

def getData(baseurl):

datalist=[]

#2.逐一解析数据

return datalist

#得到一个指定URL的网页内容

def askURL(url):

#模拟浏览器头部信息,向豆瓣服务器发送信息

head={"User-Agent":" Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"}

#用户代理,表示告诉豆瓣服务器,我们是什么类型的机器,浏览器(本质上是高速浏览器,我们可以接受什么水平的信息)

request=urllib.request.Request(url,headers=head)

html=""

try:

response=urllib.request.urlopen(request)

html=response.read().decode("utf-8")

print(html)

except urllib.error.URLError as e: #捕获错误

if hasattr(e,"code"):

print(e.code) #打印错误代码

if hasattr(e,"reason"):

print(e.reason) #打印错误原因

return html

#保存数据

def saveData(savepath):

print("save.....")

if __name__ == "__main__": #当程序执行时

#调用函数

main()

  查看内容,发现获取到网页的数据

  

  爬网

  带循环结构的换页

  #爬取网页

def getData(baseurl):

datalist=[]

for i in range(0,10): #调用获取页面信息的函数,10次

url=baseurl + str(i*25)

html=askURL(url) #保存获取到的网页源码

#2.逐一解析数据

return datalist

  当前代码

  #-*- coding: utf-8 -*-

from bs4 import BeautifulSoup #网页解析,获取数据

import re #正则表达式,进行文字匹配

import urllib.request,urllib.error #制定URL,获取网络数据

import xlwt #进行excel操作

import sqlite3 #进行SQLite数据库操作

def main():

baseurl="https://movie.douban.com/top250?start="

#1.爬取网页

datalist=getData(baseurl)

savepath=".\\豆瓣电影Top250.xls" #当前文件夹下

#3.保存数据

#saveData(savepath)

askURL("https://movie.douban.com/top250?start=")

#爬取网页

def getData(baseurl):

datalist=[]

for i in range(0,10): #调用获取页面信息的函数,10次

url=baseurl + str(i*25)

html=askURL(url) #保存获取到的网页源码

#2.逐一解析数据

return datalist

#得到一个指定URL的网页内容

def askURL(url):

#模拟浏览器头部信息,向豆瓣服务器发送信息

head={"User-Agent":" Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"}

#用户代理,表示告诉豆瓣服务器,我们是什么类型的机器,浏览器(本质上是高速浏览器,我们可以接受什么水平的信息)

request=urllib.request.Request(url,headers=head)

html=""

try:

response=urllib.request.urlopen(request)

html=response.read().decode("utf-8")

print(html)

except urllib.error.URLError as e: #捕获错误

if hasattr(e,"code"):

print(e.code) #打印错误代码

if hasattr(e,"reason"):

print(e.reason) #打印错误原因

return html

#保存数据

def saveData(savepath):

print("save.....")

if __name__ == "__main__": #当程序执行时

#调用函数

main()

  添加 BeautifulSoup 用于 html 文件解析

  BeautifulSoup用于html文件解析 - 程序员大本营

  补充re模块:正则表达式

  re 模块:正则表达式_ai的博客 - CSDN博客

  正则提取得到每部电影的相关信息

  #2.逐一解析数据

soup=BeautifulSoup(html,"html.parser")

for item in soup.find_all('div',class_="item"): #查找符合要求的字符串,形成列表

print(item)

  

  

  创建指向视频第一页的超链接

  . . . . . . . .

  截断一部电影的item信息,提取所有需要的东西,然后添加一个循环

  #爬取网页

def getData(baseurl):

datalist=[]

for i in range(0,1): #调用获取页面信息的函数,10次

url=baseurl + str(i*25)

html=askURL(url) #保存获取到的网页源码

#2.逐一解析数据

soup=BeautifulSoup(html,"html.parser")

for item in soup.find_all('div',class_="item"): #查找符合要求的字符串,形成列表

#print(item) #测试:查看电影item全部信息

data=[] #保存一部电影的全部信息

item=str(item)

print(item)

break

#影片详情的链接

link=re.findall(findLink,item)[0] #re库用来通过正则表达式查找指定的字符串,[0]表示如果有两个,只要第一个

print(link)

return datalist

  将其保存到 html 文档中进行比较

  

1

肖申克的救赎

/ The Shawshank Redemption

/ 月黑高飞(港) / 刺激1995(台)

[可播放]

<p class="">

导演: 弗兰克·德拉邦特 Frank Darabont 主演: 蒂姆·罗宾斯 Tim Robbins /...

1994 / 美国 / *敏*感*词* 剧情

9.7

2523850人评价

  

希望让人自由。

</p>

  将需要提取的相关东西转化为正则表达式,设置为全局变量

<p>#影片详情的链接的规则

findLink=re.compile(r&#39;<a href="(.*?)">&#39;) #创建正则表达式,表示规则(字符串模式)

#影片图片

findImgSrc=re.compile(r&#39;

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线