V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
storypanda
V2EX  ›  Python

最近在 Python 爬虫入门,发现各种书籍写法不一样,该看(用)哪一个呢?

  •  
  •   storypanda · 2019-05-24 03:27:46 +08:00 · 4301 次点击
    这是一个创建于 2040 天前的主题,其中的信息可能已经有所发展或是发生改变。

    关于爬虫的话,《 Python 网络采集》一书在介绍 BbeautifulSoup 时写

    from urllib.request import urlopen
    

    同样这本书,随后

    from bs4 import BeautifulSoup
    html = urlopen("http://www......")
    bsObj = BeautifulSoup(html.read())
    print(bsObj.h1)
    

    《用 Python 写网络爬虫》写

    import urllib.request
    

    还是这本书:

    def download(url): 
        return urllib.request.urlopen(url).read() 
    
    #感觉是之前代码( html = )的简写?此处也没有定义 url,可能 urlopen 可以直接定义
    

    之前崔大的 Python 2.7 的文章:

    import urllib2
    response = urllib2.urlopen(url) #此处突然出现 response 等内容,第一个书里的代码直接就有 read 了
    print response.read() 
    

    感觉 Python 写法多种多样,自己的博客Python 爬虫初见里也总结了一下from … import …与 import 的区别,以及得出

    urllib 通用库>urllib.quest>urlopen 函数

    但是 import 在没有 from 的情况下也可以直接导入一个 urllib.quest 等,就很奇特?

    这个是和其他语言一样,每个人的写法不一样,根据自己的风格来还是?

    这是目前单看爬虫书籍学习的疑惑,求指点以及避坑~

    第 1 条附言  ·  2019-05-24 13:42:44 +08:00
    感谢大家,决定还是先看基础。
    26 条回复    2019-05-24 12:10:01 +08:00
    wenbinwu
        1
    wenbinwu  
       2019-05-24 03:51:16 +08:00   ❤️ 1
    有的用 urllib,有的用 urllib2,看一下文档
    https://docs.python.org/2/library/urllib.html
    https://docs.python.org/2/library/urllib2.html

    如何 import,看需要吧,几种方法都是一样的结果

    response 出现不出现,也是看需要
    比如你要去除一个字符串里的 abcd 四个字母
    你可以写'v2exabc'.replace('a','').replace('b','').replace('c','').replace('d','')
    或者
    remove_a = 'v2exabc'.replace('a','')
    remove_a_b = remove_a.replace('b','')
    remove_a_b_c = remove_a_b.replace('c','')
    remove_a_b_c_d = remove_a_b_c.replace('d','')
    Sylv
        2
    Sylv  
       2019-05-24 04:55:01 +08:00 via iPhone   ❤️ 2
    你提的这些问题属于编程基础中的基础,建议你找个 Python 基础教程重新学习一遍你就懂了,这些写法都是等价的,只是风格区别,你现在有点像还没学会走就想跑。
    Trim21
        3
    Trim21  
       2019-05-24 05:05:23 +08:00 via iPhone
    我还以为你在纠结怎么爬,原来是纠结怎么 import …

    这没啥奇特的,就是 python 同时支持两种写法。
    RHxW
        4
    RHxW  
       2019-05-24 08:11:51 +08:00   ❤️ 3
    假设 B 和 C 都是 A 包里的
    1.from A import B
    ->B() #OK!
    ->C() #ERROR!
    2.import A
    ->A.B() #OK!
    ->A.C() #OK!
    3.from A import *
    ->B() #OK!
    ->C() #OK!
    zw1027
        5
    zw1027  
       2019-05-24 08:29:15 +08:00
    越长的调用就越啰嗦,我一般直接 import 到最常调用的那一层,不是一昧的 import 最顶层或最底层
    oblivious
        6
    oblivious  
       2019-05-24 08:36:47 +08:00 via iPhone   ❤️ 3
    确定不使用 requests 模块?

    用 requests 一时爽,一直用一直爽。
    gimp
        7
    gimp  
       2019-05-24 08:41:15 +08:00
    直接用 requests 多好

    简介: Requests: HTTP for Humans
    tony9413
        8
    tony9413  
       2019-05-24 08:49:36 +08:00
    这些博客都过时了,python2 的语法,刚学的话,还是建议用 3,比较 2 眼看就不维护了。
    GeruzoniAnsasu
        9
    GeruzoniAnsasu  
       2019-05-24 08:51:32 +08:00 via Android   ❤️ 1
    能不能先把 python 语法入门看一遍求你了
    jingyulong
        10
    jingyulong  
       2019-05-24 08:53:55 +08:00
    建议把基础的书籍摆在首位,虽然应用类的书籍能够引起你的兴趣,但是把基础弄扎实了能节省很多时间。
    ctro15547
        11
    ctro15547  
       2019-05-24 09:04:24 +08:00
    感觉刚开始学 可以一步一步慢慢来 ,先看看语法,刚开始可以分步走,先 import urllib2,然后再 response = urllib2.urlopen(url),后面了解了就随便怎么拼了
    littleylv
        12
    littleylv  
       2019-05-24 09:10:04 +08:00
    建议你“ Python 爬虫入门”之前先“ Python 入门”
    yth492300648
        13
    yth492300648  
       2019-05-24 09:11:50 +08:00
    9012 年了 还用 urllib 纯粹浪费时间
    ddzzhen
        14
    ddzzhen  
       2019-05-24 09:12:51 +08:00 via Android
    看 google 出来之后第一页的博客足以
    qcts33
        15
    qcts33  
       2019-05-24 09:35:08 +08:00
    tikazyq
        16
    tikazyq  
       2019-05-24 09:36:28 +08:00 via iPhone
    urllib 是非常基础的库,了解一下就可以了,现在都不用这个库来做爬虫了。要进阶的话,了解一下多线程、多进程、scrapy、pyspider、gerapy、crawlab。

    顺便安利一下来源爬虫平台 crawlab,方便管理开发你的爬虫,https://github.com/tikazyq/crawlab
    houzhimeng
        17
    houzhimeng  
       2019-05-24 10:10:40 +08:00
    统统 requests
    inhzus
        18
    inhzus  
       2019-05-24 10:29:34 +08:00   ❤️ 1
    这些博客有些过时了, Python 3 的爬虫几乎都是用 requests 了, 语法简单很多, 偶尔需要 urlparse 等函数的时候才用 urllib.
    现在直接上手 requests 的官方(中文 /英文)文档就好了
    datou
        19
    datou  
       2019-05-24 10:31:48 +08:00   ❤️ 1
    新手入门爬虫最好的视频教程还是 youtube 上台湾大数软体邱佑伟老师的视频

    https://www.youtube.com/channel/UCFdTiwvDjyc62DBWrlYDtlQ
    boluo
        20
    boluo  
       2019-05-24 10:45:25 +08:00
    我也在买点入门的纸质书学习,求推荐
    testeststs
        21
    testeststs  
       2019-05-24 10:53:32 +08:00
    这些写法没区别吧,先学点 python 基础的,自然就懂了。
    要是不想学,只想完成项目,那就抄。
    Root1997
        22
    Root1997  
       2019-05-24 11:00:59 +08:00
    requests 是真的爽。
    JimmyTinsley
        23
    JimmyTinsley  
       2019-05-24 11:20:38 +08:00
    用 requests 啊
    LIBQ
        24
    LIBQ  
       2019-05-24 11:28:43 +08:00
    说到底 他们都是一样的 条条大路通罗马 随便一种都可以
    lonelygo
        25
    lonelygo  
       2019-05-24 11:59:41 +08:00
    大家聚焦 import 的问题,楼主还无法想出来 requests 为啥是 humans http,一直用一直爽。
    Qzier
        26
    Qzier  
       2019-05-24 12:10:01 +08:00 via iPhone
    先别写了,先从头开始学
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1170 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:25 · PVG 02:25 · LAX 10:25 · JFK 13:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.