您现在的位置是:主页 > news > 郑州建设信息/2022年seo最新优化策略

郑州建设信息/2022年seo最新优化策略

admin2025/5/6 9:24:28news

简介郑州建设信息,2022年seo最新优化策略,很有设计感的企业网站,怎么做好网站爬虫的构建流程 HTTP Error 418: 这个错误是对方发现你是爬虫。 主要是分为四步:准备工作、获取数据、解析内容、保存数据 一、准备工作: 一般python程序第一行须加入 #-*_coding:utf-8-*-或者#codingutf-8 这样可以在代码种包含中文在python中&…

郑州建设信息,2022年seo最新优化策略,很有设计感的企业网站,怎么做好网站爬虫的构建流程 HTTP Error 418: 这个错误是对方发现你是爬虫。 主要是分为四步:准备工作、获取数据、解析内容、保存数据 一、准备工作: 一般python程序第一行须加入 #-*_coding:utf-8-*-或者#codingutf-8 这样可以在代码种包含中文在python中&…

爬虫的构建流程

HTTP Error 418: 这个错误是对方发现你是爬虫。

主要是分为四步:准备工作、获取数据、解析内容、保存数据

一、准备工作:

  • 一般python程序第一行须加入
    #-*_coding:utf-8-*-或者#coding=utf-8 这样可以在代码种包含中文
  • 在python中,使用函数实现单一功能或相关联功能的代码段,可以提高可读性和代码重复利用率,函数代码块以def关键词开头,后接空格、函数标识符、名称、圆括号()、冒号:,括号中可以传入参数,函数段缩进(Tab或四个空格,只能选择一种),return用于结束函数,可以返回一个值,也可以不带任何表达式(表示返回None)
  • Python文件中可以加入main函数用于测试程序:
    if __main__ == "__main__":
  • python 使用#添加注释,说明代码(段)的作用。

模块(module):用来从逻辑上组织python代码(变量、类、函数),本质就是py文件,提高代码的可维护性。python使用import来导入模块,如:

import requests
from bs4 import BeautifulSoup   #进行数据获取,网页解析
import re   #正则表达式,进行文字匹配
import urllib.request,urllib.error   #指定url,获取网页数据。
import xlwt   #进行excel操作
import sqlite3  #进行SQlite数据库操作

二、获取数据

一般使用urllib库获取页面。

  • 获取页面数据:
  • 对每一个页面,调用askURL函数获取页面内容
  • 定义一个获取页面的函数askURL,传入一个url参数,表示网页。
  • urllib.request生成请求;
    urllib.urlopen发送请求获取响应;read获取页面内容。
  • 在访问页面时经常会发生错误,为了程序正常运行。加入异常捕获try…except…语句

1.获取一个get请求

import urllib.request
response = urllib.request.urlopen("http://www.baidu.com")
print(response)

在这里插入图片描述
对获取到的网页进行utf-8的解码

import urllib.request
response = urllib.request.urlopen("http://www.baidu.com")
print(response.read().decode('utf-8'))

在这里插入图片描述

2.获取一个post请求:

专门测试的一个网址:http://httpbin.org
在这里插入图片描述
模拟用户登录:

import urllib.request
import urllib.parse
data = bytes(urllib.parse.urlencode({"hello":"world"}),encoding="utf-8")#封装
response1 = urllib.request.urlopen("http://httpbin.org/post",data = data)
print(response1.read().decode("utf-8"))

在这里插入图片描述

get请求:

import urllib.request
response = urllib.request.urlopen("http://httpbin.org/get")
print(response.read().decode('utf-8'))

在这里插入图片描述

3.超时(异常):

try:import urllib.requestresponse = urllib.request.urlopen("http://httpbin.org/get",timeout=0.01)#timeout表示时间之内print(response.read().decode('utf-8'))except urllib.error.URLError as e:print("time out!")

在这里插入图片描述
如果设定时间内没有爬取到,就不要去爬取了,会遇到很多种这样的情况,超时处理,尽量要做!

模拟头部

response = urllib.request.urlopen("http://httpbin.org/get",timeout=3)
# print(response.status)#查看状态码
print(response.getheaders())#查看网页的信息

在这里插入图片描述
HTTP Error 418: 这个错误是对方发现你是爬虫

解决方法:

headers头部获取方法:
在这里插入图片描述
模拟头部:
访问一个普通get请求:

import urllib.request
url='https://movie.douban.com/top250?statrt=1'
headers = { "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4208.400"  
}
req = urllib.request.Request(url=url,headers=headers)
response3 = urllib.request.urlopen(req)
print(response3.read().decode("utf-8"))

在这里插入图片描述

获取post请求:

import urllib.request
import urllib.parse
data = bytes(urllib.parse.urlencode({"name":"eric"}),encoding="utf-8")
url="http://httpbin.org/post"
headers = { "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4208.400"  
}
req = urllib.request.Request(url=url,data=data,headers=headers,method="POST")
response2 = urllib.request.urlopen(req)
print(response2.read().decode("utf-8"))

在这里插入图片描述

总体流程:

import requests
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?statrt=1'#爬取网页datalist=getData(baseurl)savepath=".\\豆瓣电影top250.xls"#保存数据saveData(savepath)#1.爬取网页
def getData(baseurl):datalist=[]return datalist#2.逐一解析数据#3.b保存数据
def saveData(savepath):pring('保存')if __name__=="__main__":#调用函数main()