Python学爬虫

44 篇文章 0 订阅

目标

项目内容难度
正则表达式抓大放小方法论, .*?非贪婪模式, 字符/数字/格式匹配4❤
文件读写txt,csv, pdf读写, 读写的数据结构如字典列表等等,pdf最难,公式读取是顽疾3❤
爬虫主体半自动(已知网页源码),全自动 (自动获取源码并爬取内容)5❤

实施

半自动爬虫实例

1 数据:
随便找个网页,贴吧,论坛,搜索词条等
随便找的百度贴吧页面链接
右击,选中源码,然后dump下来存为source.txt

2 源码:

import csv
import re

# 1 输入模块: 网页存txt打开作为被匹配源
f = open('source.txt')
source = f.read()
#print(source) #UT-mode

# 2 正则匹配模块,爬虫的核心:抓大放小,找到楼层》用户名,内容,日期
floor = re.findall('<li class="d_name" data-field=\'(.*?)<li class="d_nameplate">', source, re.S)
#print(floor[0])
dic_ls = []
for fr in floor:
    dic = {}
    dic['name'] = re.findall( 'target=.*?>(.*?)<', fr, re.S)[0]
    dic['content'] = re.findall('j_d_post_content .*? style="display:;">(.*?)<', fr, re.S)[0].strip()
    dic['time'] = re.findall(':&quot;(\d{4}-\d{2}-\d{2})', fr, re.S)[0].strip()
    dic_ls.append(dic)

f.close()
# 3 输出为csv文件: fields, item;
fout = open('BBS.csv','w')
writer = csv.DictWriter(fout,['name', 'content', 'time'])
writer.writeheader()
writer.writerows(dic_ls)
fout.close()
  • 输入模块-〉正则匹配-》输出组织;
  • 最难的是正则匹配,活用(.*?)和特殊结构<, html字段等等;
  • re.S 表示适用正则模块的匹配规则,支付串全部string参与匹配(而非默认的第一行参与匹配)

爬取基本流程

读取header>> 网址处理 >>匹配正则>> 输出组织

风险注意

法律道德风险

  1. 不要做危机站点运行的爬取行为:太频繁,爬取密码等
  2. 注意知识产权保护和侵权
  3. 在职项目注意信息违规

down ppt,doc资料神器

            # 自动下载Download链接
            wb = openpyxl.load_workbook(file)
            ws = wb.get_sheet_by_name(sh_name)
            for i in range(2, m): #m
                lk = ws.cell(i, Download_Col + 1).hyperlink
                if lk:
                    webbrowser.open(lk.target)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值