`

python爬虫学习记录

阅读更多
1. 获取html页面

其实,最基本的抓站,两句话就可以了
import urllib2
content = urllib2.urlopen('http://XXXX').read()


http://www.lovelucy.info/python-crawl-pages.html
并行处理/出墙
http://wuchong.me/blog/2014/04/24/easy-web-scraping-with-python/

import argparse
import re
from multiprocessing import Pool
import requests
import bs4


爬淘宝MM,生成文件夹和图片
http://cuiqingcai.com/1001.html
import urllib
import urllib2
import re
import tool
import os



Python爬虫入门六之Cookie的使用
http://cuiqingcai.com/968.html

import urllib
import urllib2
import cookielib


创建一个带有cookie的opener,在访问登录的URL时,将登录后的cookie保存下来,然后利用这个cookie来访问其他网址。


正则的使用和re模块介绍
http://cuiqingcai.com/977.html

re.compile(string[,flag])  
#以下为匹配所用函数
re.match(pattern, string[, flags])
re.search(pattern, string[, flags])
re.split(pattern, string[, maxsplit])
re.findall(pattern, string[, flags])
re.finditer(pattern, string[, flags])
re.sub(pattern, repl, string[, count])
re.subn(pattern, repl, string[, count])


-----------------------------------------------------------
例子:
content = response.read().decode('utf-8')
pattern = re.compile('<div.*?author">.*?<a.*?<img.*?>(.*?)</a>.*?<div.*?'+
                         'content">(.*?)<!--(.*?)-->.*?</div>(.*?)<div class="stats.*?class="number">(.*?)</i>',re.S)
items = re.findall(pattern,content)
for item in items:
    print item[0],item[1],item[2],item[3],item[4]


现在正则表达式在这里稍作说明
1).*? 是一个固定的搭配,.和*代表可以匹配任意无限多个字符,加上?表示使用非贪婪模式进行匹配,也就是我们会尽可能短地做匹配,以后我们还会大量用到 .*? 的搭配。

2)(.*?)代表一个分组,在这个正则表达式中我们匹配了五个分组,在后面的遍历item中,item[0]就代表第一个(.*?)所指代的内容,item[1]就代表第二个(.*?)所指代的内容,以此类推。

3)re.S 标志代表在匹配时为点任意匹配模式,点 . 也可以代表换行符。

这样我们就获取了发布人,发布时间,发布内容,附加图片以及点赞数。


过滤有图片的新闻


保存到数据库:
http://cuiqingcai.com/1972.html
2.页码保存
爬虫爬取过程中可能出现各种各样的错误,这样会导致爬虫的中断,如果我们重新运行爬虫,那么就会导致爬虫从头开始运行了,这样显然是不合理的。所以,我们需要把当前爬取的页面保存下来,比如可以保存到文本中,假如爬虫中断了,重新运行爬虫,读取文本文件的内容,接着爬取即可。
 def main(self):
        f_handler=open('out.log', 'w') 
        sys.stdout=f_handler
        page = open('page.txt', 'r')
        content = page.readline()
        start_page = int(content.strip()) - 1
        page.close()     
        print self.getCurrentTime(),"开始页码",start_page
        print self.getCurrentTime(),"爬虫正在启动,开始爬取爱问知识人问题"
        self.total_num = self.getTotalPageNum()
        print self.getCurrentTime(),"获取到目录页面个数",self.total_num,"个"
        if not start_page:
            start_page = self.total_num
        for x in range(1,start_page):
            print self.getCurrentTime(),"正在抓取第",start_page-x+1,"个页面"
            try:
                self.getQuestions(start_page-x+1)
            except urllib2.URLError, e:
                if hasattr(e, "reason"):
                    print self.getCurrentTime(),"某总页面内抓取或提取失败,错误原因", e.reason
            except Exception,e:  
                print self.getCurrentTime(),"某总页面内抓取或提取失败,错误原因:",e
            if start_page-x+1 < start_page:
                f=open('page.txt','w')
                f.write(str(start_page-x+1))
                print self.getCurrentTime(),"写入新页码",start_page-x+1
                f.close()


3.页面处理
页面处理过程中,我们可能遇到各种各样奇葩的HTML代码,和上一节一样,我们沿用一个页面处理类即可。

import re
#处理页面标签类
class Tool:
    
    #将超链接广告剔除
    removeADLink = re.compile('<div class="link_layer.*?</div>')
    #去除img标签,1-7位空格,&nbsp;
    removeImg = re.compile('<img.*?>| {1,7}|&nbsp;')
    #删除超链接标签
    removeAddr = re.compile('<a.*?>|</a>')
    #把换行的标签换为\n
    replaceLine = re.compile('<tr>|<div>|</div>|</p>')
    #将表格制表<td>替换为\t
    replaceTD= re.compile('<td>')
    #将换行符或双换行符替换为\n
    replaceBR = re.compile('<br><br>|<br>')
    #将其余标签剔除
    removeExtraTag = re.compile('<.*?>')
    #将多行空行删除
    removeNoneLine = re.compile('\n+')
    
    def replace(self,x):
        x = re.sub(self.removeADLink,"",x)
        x = re.sub(self.removeImg,"",x)
        x = re.sub(self.removeAddr,"",x)
        x = re.sub(self.replaceLine,"\n",x)
        x = re.sub(self.replaceTD,"\t",x)
        x = re.sub(self.replaceBR,"\n",x)
        x = re.sub(self.removeExtraTag,"",x)
        x = re.sub(self.removeNoneLine,"\n",x)
        #strip()将前后多余内容删除
        return x.strip()


更多:http://cuiqingcai.com/category/technique/python
分享到:
评论

相关推荐

    python爬虫学习笔记-scrapy框架(1)

    python爬虫学习笔记-scrapy框架(1) python scrapy 爬虫 python爬虫学习笔记-scrapy框架(1) python scrapy 爬虫 python爬虫学习笔记-scrapy框架(1) python scrapy 爬虫 python爬虫学习笔记-scrapy框架(1) python ...

    python 爬虫学习笔记

    Python 爬虫学习笔记 本文将详细介绍 Python 爬虫学习笔记的知识点,涵盖爬虫基础、网络和前端基础、Requests 模块、请求头、GET 和 POST 请求、代理、Cookie 模拟登录、Quote 和 Unquote、登录和获取 Cookie、Post...

    python爬虫学习笔记-scrapy框架(2)

    python爬虫学习 scrapy框架 爬虫学习 scrapy python爬虫学习 scrapy框架 爬虫学习 scrapy python爬虫学习 scrapy框架 爬虫学习 scrapypython爬虫学习 scrapy框架 爬虫学习python爬虫学习 scrapy框架 爬虫学习python...

    最牛逼的Python爬虫学习笔记

    最牛逼的Python爬虫学习笔记,非常不错的,强烈建议下载

    python爬虫学习笔记.zip

    Python爬虫学习笔记 在IT领域,Python爬虫是一种常用的技术,用于自动化地从互联网上抓取大量数据。Python语言因其简洁的语法和丰富的库支持,成为开发爬虫的首选工具。本篇将深入探讨Python爬虫的相关知识点,帮助...

    python爬虫学习笔记.pdf

    Python爬虫学习笔记 本资源摘要信息将对Python爬虫学习笔记进行详细的知识点总结,涵盖正则表达式、Python文件操作、CSV文件操作等方面的知识。 一、 正则表达式 正则表达式是一段字符串,可以用于表示一段有规律...

    01 Python 爬虫学习笔记

    Python 爬虫学习笔记 Python 爬虫学习笔记是 Python 编程语言中的一种技术,用于从互联网上抓取有价值的数据。爬虫从本质上来说,就是利用程序在网上拿到对我们有价值的数据。爬虫能做很多事,能做商业分析,也能做...

    最牛逼的Python爬虫学习笔记,学习过程中记录的笔记

    第1段:爬虫原理与数据抓取 爬虫能做些什么通用爬虫 和聚焦爬虫URL的意义 (了解)关于HTTP和 ...应urlib2:Python的标准 模块案例:批量爬取页面 数据 URLError与 HTTPError 附录:响应状 态码详解

    python爬虫课件+代码.zip

    本课程由“路飞学城樵夫”老师指导,通过实际操作帮助学习者掌握Python爬虫的基本原理和实战技巧。课程内容包括但不限于网页结构解析、请求与响应处理、数据提取以及后续的数据存储。 首先,Python爬虫的核心库如...

    python爬虫学习笔记,通过html标签获取网页内容

    bs4 通过html标签获取网页内容、Xpath解析、模拟登录cookies、多线程,多进程、selenium的使用

    简单的python爬虫,代码完整

    学习这个简单的Python爬虫项目,不仅可以掌握基础的爬虫编写技巧,还能了解到HTTP协议、HTML解析、数据存储等相关知识,为进一步提升爬虫技术打下坚实基础。同时,要注意在实际使用中遵守网站的robots.txt文件规定,...

    python爬虫学习笔记(三)—— 实战爬取豆瓣TOP250电影

    python爬虫学习笔记(一)——初识爬虫 python爬虫学习笔记(二)——解析内容 开始实战爬取豆瓣TOP250电影 首先还是重新复习下爬虫的基本流程: 发起请求 获取响应内容 解析内容 保存数据 1. 发起请求 首先观察豆瓣...

    python爬虫学习91.zip

    Python爬虫学习91.zip这个压缩包文件显然包含了一份关于Python爬虫技术的学习资料,其中可能包括教程、代码示例、笔记或者相关的学习资源。Python爬虫是数据获取的重要工具,广泛应用于数据分析、市场研究、新闻抓取...

    用来记录 Python 爬虫学习之用.zip

    Python爬虫学习是一个涵盖多个领域的综合技能,包括网络请求、数据解析、网页结构分析、异常处理、文件操作等。在这个压缩包"用来记录 Python 爬虫学习之用.zip"中,很可能包含了作者在学习Python爬虫过程中的笔记、...

    python爬虫个人笔记记录

    【Python爬虫个人笔记记录】 Python爬虫是Python编程领域中的一个重要分支,它主要用于自动从互联网上抓取信息。Python的易读性、丰富的库支持以及强大的数据处理能力使其成为爬虫开发的理想选择。本笔记将围绕...

    python爬虫基本知识

    pyhtobn爬虫学习笔记,python爬虫的基本知识,包活各个组建,各部分的功能

    python爬虫学习案例-.mysql数据库.rar

    data = ('Python爬虫学习', '这是关于Python爬虫的内容') cursor.execute(sql_insert, data) # 提交事务,确保数据被保存 conn.commit() ``` 在爬虫结束后,记得关闭游标和数据库连接: ```python cursor.close()...

Global site tag (gtag.js) - Google Analytics