爬取网页的基本步骤

爬取网页步骤图

数据存在源代码中

1. 安装requests库和BeautifulSoup库

pip install requestspip install BeautifulSoup4

2. 获取爬虫所需的header和cookie

获取header和cookie是一个爬虫程序必须的,它直接决定了爬虫程序能不能准确的找到网页位置进行爬取。 首先进入微博热搜的页面,按下F12,就会出现网页的js语言设计部分。如下图所示。找到网页上的Network部分。然后按下ctrl+R刷新页面。如果,进行就有文件信息,就不用刷新了,当然刷新了也没啥问题。然后,我们浏览Name这部分,找到我们想要爬取的文件,鼠标右键,选择copy,复制下网页的URL。就如下图所示。 获取资源地址 复制好URL后,我们就进入一个网页Convert curl commands to code。这个网页可以根据你复制的URL,自动生成header和cookie,如下图。生成的header和cookie,直接复制走就行,粘贴到程序中。 获取header 将获取的header和cookie复制到程序中

3. 获取网页

我们将header和cookie搞到手后,就可以将它复制到我们的程序里。之后,使用request请求,就可以获取到网页了。

response = requests.get('http://www.fortunechina.com/fortune500/c/2022-08/03/content_415683.htm', headers=headers, cookies=cookies, verify=False)
4. 解析网页

这个时候,我们需要回到网页。同样按下F12,找到网页的Elements部分。用左上角的小框带箭头的标志,如下图,点击网页内容,这个时候网页就会自动在右边显示出你获取网页部分对应的代码。 解析网页 如上图所示,我们在找到想要爬取的页面部分的网页代码后,将鼠标放置于代码上,右键,copy到selector部分。就如上图所示。

5. 分析得到的信息,简化地址

其实刚才复制的selector就相当于网页上对应部分存放的地址。由于我们需要的是网页上的一类信息,所以我们需要对获取的地址进行分析,提取。当然,就用那个地址也不是不行,就是只能获取到你选择的网页上的那部分内容。 #table1 > tbody > tr:nth-child(1) 由于tr是网页标签,后面的部分就是其补充的部分,也就是子类选择器。可以推断出,该类信息,就是存储在tr的子类中,我们直接对tr进行信息提取,就可以获取到该部分对应的所有信息。所以提炼后的地址为: #table1 > tbody > tr

6. 爬取内容,清洗数据

这一步完成后,我们就可以直接爬取数据了。用一个标签存储上面提炼出的像地址一样的东西。标签就会拉取到我们想获得的网页内容。 content="#table1 > tbody > tr" 之后我们就要soup和text过滤掉不必要的信息,比如js类语言,排除这类语言对于信息受众阅读的干扰。这样我们就成功的将信息,爬取下来了。

fo = open("./世界五百强.txt",'a',encoding="utf-8")
a=soup.select(content)
for i in range(0,len(a)):
    a[i] = a[i].text
    fo.write(a[i]+'\n')
fo.close()
7. 实例代码
import os
import requests
from bs4 import BeautifulSoup
#爬虫头数据
cookies = {
    'BAIDU_SSP_lcr': 'https://www.baidu.com/link?url=8fINk4kAl1rToo3VYiaO58w6BxDeOhemgG9RvryJ_GmDL3IzdssoBO15R1IktI75pSDNamPdM3nkmCVDuCBlO5lZo6FiZe8Ic-xTLiulav_&wd=&eqid=dbe7116d0000b83d0000000364894936',
    '_ga': 'GA1.2.373780311.1686718787',
    '_gid': 'GA1.2.514393082.1686718787',
    '_gat': '1',
    'UM_distinctid': '188b8462eaeaa1-0f8ae9bb61c592-7b183b4d-1fa400-188b8462eafabc',
    'CNZZDATA1281262535': '1931076428-1686716240-https%253A%252F%252Fwww.baidu.com%252F%7C1686716240',
    '_ga_M83EKTCHQB': 'GS1.2.1686718787.1.0.1686718787.0.0.0',
}

headers = {
    'Connection': 'keep-alive',
    'Pragma': 'no-cache',
    'Cache-Control': 'no-cache',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.9 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'Referer': 'https://www.baidu.com/link?url=8fINk4kAl1rToo3VYiaO58w6BxDeOhemgG9RvryJ_GmDL3IzdssoBO15R1IktI75pSDNamPdM3nkmCVDuCBlO5lZo6FiZe8Ic-xTLiulav_&wd=&eqid=dbe7116d0000b83d0000000364894936',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    # 'Cookie': 'BAIDU_SSP_lcr=https://www.baidu.com/link?url=8fINk4kAl1rToo3VYiaO58w6BxDeOhemgG9RvryJ_GmDL3IzdssoBO15R1IktI75pSDNamPdM3nkmCVDuCBlO5lZo6FiZe8Ic-xTLiulav_&wd=&eqid=dbe7116d0000b83d0000000364894936; _ga=GA1.2.373780311.1686718787; _gid=GA1.2.514393082.1686718787; _gat=1; UM_distinctid=188b8462eaeaa1-0f8ae9bb61c592-7b183b4d-1fa400-188b8462eafabc; CNZZDATA1281262535=1931076428-1686716240-https%253A%252F%252Fwww.baidu.com%252F%7C1686716240; _ga_M83EKTCHQB=GS1.2.1686718787.1.0.1686718787.0.0.0',
}
#数据存储
fo = open("./世界百强企业.txt",'a',encoding="utf-8")
#获取网页
response = requests.get('http://www.fortunechina.com/fortune500/c/2022-08/03/content_415683.htm', headers=headers, cookies=cookies, verify=False)
#解析网页
response.encoding='utf-8'
soup = BeautifulSoup(response.text, 'html.parser')
#爬取内容
content="#table1 > tbody > tr"
#清洗数据
a=soup.select(content)
for i in range(0,len(a)):
    a[i] = a[i].text
    fo.write(a[i]+'\n')
fo.close()