最近刚开始学爬虫,遇到了个问题,我用爬虫爬取《财富》世界500强的时候能成功运行的代码,但是我想用同样的代码爬取同个网站的不同数据,但是却爬取失败了,只是爬取了网页的源代码,解析不了
import re
import time
import requests
from bs4 import BeautifulSoup
try:
# 请求的 URL 路径,2021年财富世界500强排行榜
url = "http://www.fortunechina.com/fortune500/c/2020-07/27/content_369925.htm"
# 发送 GTE 请求
response = requests.get(url)
# 响应内容编码方式
print("response.encoding = ", response.encoding)
# 响应内容编码方式改为 'utf-8'
response.encoding = 'utf-8'
print("response.encoding = ", response.encoding)
# HTTP 响应内容字符串,即 url 对应的页面内容
text = response.text
print('text', text)
# 使用 html5lib 解析器,以浏览器的方式解析文档,生成 HTML5 格式的文档
soap = BeautifulSoup(text, 'html5lib')
print('soap.text', soap)
# 查找符合查询条件的第一个标签节点(tbody)
top500 = soap.find('tbody')
# 以可写的方式打开 csv 文件
file1 = open('top500', 'w', encoding='utf-8')
# 用于测试编码错误的例外
newLine = ''
i = 0
# 传入 正则表达式 re 库
for tag in top500.findAll(re.compile("^td")):
i += 1
newLine = newLine + tag.string + "|"
# print('newLine = ', newLine)
if i == 6:
# 2021年财富500强数据,一行为1个公司,以 “|” 分隔
print('newLine = ', newLine)
# 单行写入文件
file1.writelines(newLine + '\n')
i = 0
newLine = ''
# 关闭文件
file1.close()
我自己感觉应该还需要把re搜索的方法给改一下,但是奈何本人自己的知识水平太差了,改re搜索方式也改掉不正确,上面代码的url是中国榜的,本来那里应该是世界榜的,我就只是换了个url结果就解析不出来了。
我想爬取的是中国500强的榜单