强调一下,我并不是一个程序员,因为最近需要去爬某个网站的信息写的这个程序。程序中有很多不规范的地方,也没用运用函数。只适合有简单爬虫需要的人参考。数据量大的时候采集速度很慢。
也希望有大佬能优化一下。
程序是基于python3的
import urllib.request
import re
import xlwt
workbook = xlwt.Workbook(encoding = 'ascii') #这里是创建一个excel把爬取到的数据储存到表格中
worksheet = workbook.add_sheet('My Worksheet') #在excel中创建一个表单
style = xlwt.XFStyle() # 初始化样式
font = xlwt.Font() # 为样式创建字体
font.name = 'Times New Roman'
font.bold = True # 黑体
font.underline = True # 下划线
font.italic = True # 斜体字
style.font = font # 设定样式
# with open('cal.txt','r') as f: # 读取txt生成列表 这里是在我爬去了全部数据后筛选的一些对我有用的页面信息编码
# line = f.read().strip()
# linestr = line.split("n")
count = 135
while (count < 9300):
try:
u = "http:/" #url前缀
url=(u +str(count))
header = {"User-Agent": "Mozilla5.0 (Windows NT 6.1; WOW64; rv:59.0) Gecko/20100101 Firefox/59.0"} #这个头是我复制粘贴的 就带着就好了不用改
request = urllib.request.Request(url, headers=header) #请求网页
response = urllib.request.urlopen(request,timeout=60) #timeout设置超时的时间,防止出现访问超时问题
# 取出json文件里的内容,返回的格式是字符串
html = response.read()
# 把json形式的字符串转换成python形式的Unicode字符串,unicodestr为数组
html = html.decode("UTF-8",)
reg1 = re.compile(r'(.*?)')
reg = re.compile(r'投票(.*?)')
url1 = re.findall(reg1, html)
url = re.findall(reg, html)
print('序号:', count, '作品编号', str(count), '作品名:', url1, '得票数:', url)
worksheet.write(count, 0, count) # 第一行第一列
worksheet.write(count, 1, url1) # 第二行第二列
worksheet.write(count, 2, url) # 第二行第二列
workbook.save('**********.xls') # 保存文件
count += 1
except Exception as e:
print('a', str(e))