首页>软件资讯>常见问题

常见问题

Python爬虫教程及环境配置

发布时间:2024-01-10 09:21:04人气:189


本篇教程将对Python的安装、Python语言的基本格式、什么是第三方包进行基本介绍,并提供一个简单爬虫程序帮助理解。如果有相关 基础的同学可以直接进入下一篇教程,下篇教程我将带大家对这个爬虫案例进行详细解析。


一、Python 环境的配置

  目前有很多种统计软件和程序语言都可以编写爬虫程序,但最常用的是Python。同时,目前网站上已经有很多 Python 的配置教程,因此这部分我直接推荐几个我认为比较全面的教程,并就相关的疑难点进一步说明。


  目前最常用的编辑器主要有 Pycharm、Spider 和 Jupyter Notebook 三种。对于新手,推荐使用 Spider 编辑器进行学习,因为 Spider 编辑器可以基于 Anaconda 进行安装,Anaconda 作为一个管理工具,自动安装了常用的第三方库,且支持手动下载 Spider 和 Jupyter Notebook 两种编辑器。

  如果不想用 Pycharm 可以不进行下载,但不使用 Pycharm请记得配置环境路径,否则后续可能会出现一系列错误。在 2024 年 1 月份以后,不建议使用 jupyter notebook 学习网络爬虫,因为新版本 requests 命令对部分网站存在一些 bug,但老版本环境配置非常麻烦。


  在教程提供的程序中, ipynb 文件仅用于展示每一步的结果,如果运行存在问题,请使用后缀为 .py 的常规 python 文件

Python软件.png

二、何为第三方库

  如果你会用Stata, Python的第三方库和Stata 的第三方库类似。如果没有用过Stata或是其他统计软件,可以将其理解为是用于方便编写程序的、由第三方开发者提供的编写好的某项功能。与Stata使用ssc install 进行第三方包的安装类似, python使用pip install安装第三方库。安装的方式为,首先按住 win+r,然后输入 cmd,最后按回车键,在命令行中输入相关命令。以下代码会帮助安装爬虫最常见的两个库:


pip install requests bs4

  在使用第三方库,需要进行导入,导入的方法主要有以下三种,我们以 requests 库为例,演示三种不同的导入方法以及对应的 requests 库中的get功能的使用方法。在python 中一行内容如果出现"#"号,代表后面的内容是注释,用于理解程序,但不会被执行。


#直接导入

import requests

r1=requests.get("https://www.baidu.com")

#导入所使用的具体功能

from requests import get

r2=get("https://www.baidu.com")

#使用别名和缩写

import requests as req

r3=req.get("https://www.baidu.com/")

四、Python 语言的基本格式

  此处的定义并不严谨,主要是为了帮助从未接触过python 的同学了解python 的基本规则。首先,python 语言是严格缩进的程序语言,因此,在运行代码的时候,请严格按照缩进规则运行。例如,在以下输出1-5 的简单for 循环中,缩进错误会导致报错。


#正确缩进

for i in range(1,6):

    print(i)

#错误缩进

for i in range(1,6):

print(i)

  由于我们在批量爬取数据时,常用到for 循环,在这里对这段代码进行解释。for代表循环的开始,i 代表循环的元素的名字,这里可以替换成其他字母或单词,只要在后续程序中相应替换,range代表循环范围,括号中第一个数字代表起始数字,第二个数字代表结束的数字(不包含这个数字),默认的间距为1 。首先我们来理解替换中间的变量名称不会对程序进行实质改变


#将名称从 i 改为 var

for var in range(1,6):

    print(var)

  以上程序虽然将i,改为了var,但结果与之前的程序一致。其次,我们进一步来理解 range,如果我们要让数值每次 +2,那么我们需要加上上一次省略的默认+1 的参数,我们称之为步幅。上一段程序完整写法为:


#将步幅加上,括号中的参数变为三个,分别为起始数值(包含) #,结束值(不包含)和步幅(默认为 1,可以不写)

for i in range(1,6,1):

    print(i)

#将步幅变为 2

for i in range(1,6,2):

    print(i)

三、一个简单的爬虫程序

  最后,在本篇提供一个简单的完整爬虫程序,大家可以尝试运行。我会在下一篇中进行具体讲解。


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

"""

Created on Tue Jan  9 10:25:57 2024


@author: 29165

"""


import requests

from bs4 import BeautifulSoup

import pandas as pd

#  <form name="listForm" id="listForm" method="post" action="/org.do?userType=1&orgCatalog=20">

url=r"https://www.crcrfsp.com/org.do?userType=1&orgCatalog=20&pageNum=1&pageTotal=23280"

r=requests.get(url=url,verify=False)

print(r.status_code)

#爬取到的网页内容

print(r.text)

#解析网页

html=r.text

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

#找到全部企业信息

thread=soup.find(name='form',attrs={"name":"listForm","id":"listForm" ,

                                    "method":"post",

                                    "action":"/org.do?userType=1&orgCatalog=20"})

#将数据保存

ids=[]

names=[]

codes=[]

areas=[]

items=thread.find_all(name="tr")


for item in items:

    elements=item.find_all(name="td")

    if elements!=[]:

        ids.append(elements[0].string)

        names.append(elements[1].string)

        codes.append(elements[2].string)

        areas.append(elements[3].string)

all_imformation=[ids,names,codes,areas]

print(all_imformation)

#输出到excel

data=pd.DataFrame([ids,names,codes,areas])

data=data.T

data.columns=['ids','names','codes','areas']

data.to_excel('E:\微信公众号\程序\爬虫\上传版本\py文件\sample.xlsx')

data2=pd.read_excel('E:\微信公众号\程序\爬虫\上传版本\py文件\sample.xlsx')



上一条:anaconda和python的区别是什么?

下一条:anaconda人工智能的操作系统