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爬虫入门,发现各种书籍写法不一样,该看(用)哪一个呢?
有的用 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 发起请求,BeautifulSoup 或 lxml 解析HTML。异步用 aiohttp。反爬复杂或者需要模拟浏览器才上 selenium 或 playwright。
给你个最基础、最通用的模板,照着这个思路写准没错:
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 同时支持两种写法。
越长的调用就越啰嗦,我一般直接 import 到最常调用的那一层,不是一昧的 import 最顶层或最底层
确定不使用 requests 模块?
用 requests 一时爽,一直用一直爽。
这些博客都过时了,python2 的语法,刚学的话,还是建议用 3,比较 2 眼看就不维护了。
能不能先把 python 语法入门看一遍求你了
建议把基础的书籍摆在首位,虽然应用类的书籍能够引起你的兴趣,但是把基础弄扎实了能节省很多时间。
感觉刚开始学 可以一步一步慢慢来 ,先看看语法,刚开始可以分步走,先 import urllib2,然后再 response = urllib2.urlopen(url),后面了解了就随便怎么拼了
建议你“ Python 爬虫入门”之前先“ Python 入门”
看 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,一直用一直爽。
先别写了,先从头开始学


