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

关于爬虫的话,《 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 等,就很奇特?

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

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


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

27 回复

有的用 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’,’’)


直接看官方文档和主流框架的教程。别纠结书上那些五花八门的写法,很多书用的库都过时了。

现在写爬虫,核心就两个库:requests 发起请求,BeautifulSouplxml 解析HTML。异步用 aiohttp。反爬复杂或者需要模拟浏览器才上 seleniumplaywright

给你个最基础、最通用的模板,照着这个思路写准没错:

import requests
from bs4 import BeautifulSoup

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}

def get_page(url):
    try:
        resp = requests.get(url, headers=headers, timeout=5)
        resp.raise_for_status()  # 检查请求是否成功
        resp.encoding = resp.apparent_encoding  # 自动识别编码
        return resp.text
    except requests.RequestException as e:
        print(f"请求失败: {e}")
        return None

def parse_html(html):
    if not html:
        return
    soup = BeautifulSoup(html, 'lxml')
    # 这里写你的解析逻辑,比如:
    # titles = soup.find_all('h2', class_='title')
    # for title in titles:
    #     print(title.get_text())

if __name__ == '__main__':
    url = 'https://example.com'  # 换成你要爬的地址
    html = get_page(url)
    parse_html(html)

总结:用 requests + BeautifulSoup/lxml 这套组合入门最稳。

你提的这些问题属于编程基础中的基础,建议你找个 Python 基础教程重新学习一遍你就懂了,这些写法都是等价的,只是风格区别,你现在有点像还没学会走就想跑。

我还以为你在纠结怎么爬,原来是纠结怎么 import …

这没啥奇特的,就是 python 同时支持两种写法。

假设 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!

越长的调用就越啰嗦,我一般直接 import 到最常调用的那一层,不是一昧的 import 最顶层或最底层

确定不使用 requests 模块?

用 requests 一时爽,一直用一直爽。

直接用 requests 多好

简介: Requests: HTTP for Humans

这些博客都过时了,python2 的语法,刚学的话,还是建议用 3,比较 2 眼看就不维护了。

能不能先把 python 语法入门看一遍求你了

建议把基础的书籍摆在首位,虽然应用类的书籍能够引起你的兴趣,但是把基础弄扎实了能节省很多时间。

感觉刚开始学 可以一步一步慢慢来 ,先看看语法,刚开始可以分步走,先 import urllib2,然后再 response = urllib2.urlopen(url),后面了解了就随便怎么拼了

建议你“ Python 爬虫入门”之前先“ Python 入门”

9012 年了 还用 urllib 纯粹浪费时间

看 google 出来之后第一页的博客足以

urllib 是非常基础的库,了解一下就可以了,现在都不用这个库来做爬虫了。要进阶的话,了解一下多线程、多进程、scrapy、pyspider、gerapy、crawlab。

顺便安利一下来源爬虫平台 crawlab,方便管理开发你的爬虫,https://github.com/tikazyq/crawlab

统统 requests

这些博客有些过时了, Python 3 的爬虫几乎都是用 requests 了, 语法简单很多, 偶尔需要 urlparse 等函数的时候才用 urllib.
现在直接上手 requests 的官方(中文 /英文)文档就好了

新手入门爬虫最好的视频教程还是 youtube 上台湾大数软体邱佑伟老师的视频

https://www.youtube.com/channel/UCFdTiwvDjyc62DBWrlYDtlQ

我也在买点入门的纸质书学习,求推荐

这些写法没区别吧,先学点 python 基础的,自然就懂了。
要是不想学,只想完成项目,那就抄。

requests 是真的爽。

用 requests 啊

说到底 他们都是一样的 条条大路通罗马 随便一种都可以

大家聚焦 import 的问题,楼主还无法想出来 requests 为啥是 humans http,一直用一直爽。

先别写了,先从头开始学

回到顶部