操作系统:Windows7专业版
Python版本:3.6.4
ide:PyCharm Community Edition 4.0.4
代码如下:
# -*- coding:utf-8 -*-
__author__ = 'zengqiang.wang'
import re
import requests
"""
思想来源:闲来无事,就想着能不能抓取点淘宝上的数据来玩玩呢?
于是在百度搜索了下,下面的代码就是参考这位仁兄的基础上做的。
在这里表示感谢
地址如下:
http://blog.csdn.net/haha1fan/article/details/54911962
需求:
抓取100个搜索关键字为Head First Python的淘宝结果页面,
把结果中的商品信息保存到txt文件中。
"""
url = 'https://s.taobao.com/search'
payload = {'q': 'Head First Python','s': '1','ie':'utf8'} #字典传递url参数
file = open('taobao_product.txt','w',encoding='utf-8')
for k in range(0,100): #100次,就是100个页的商品数据
payload ['s'] = 44*k+1 #此处改变的url参数为s,s为1时第一页,s为45是第二页,89时第三页以此类推
resp = requests.get(url, params = payload)
print(resp.url) #打印访问的网址
resp.encoding = 'utf-8' #设置编码
title = re.findall(r'"raw_title":"([^"]+)"',resp.text,re.I) #正则保存所有raw_title的内容,这个是书名,下面是价格,地址
price = re.findall(r'"view_price":"([^"]+)"',resp.text,re.I)
loc = re.findall(r'"item_loc":"([^"]+)"',resp.text,re.I)
x = len(title) #每一页商品的数量
for i in range(0,x) : #把列表的数据保存到文件中
file.write(str(k*44+i+1)+'书名:'+title[i]+'\n'+'价格:'+price[i]+'\n'+'地址:'+loc[i]+'\n\n')
file.close()
注意:
1.在python3.6.4下下载request库:
在dos下输出结果如下
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\zengqiang.wang>D:
D:\>cd Python
D:\Python>dir
驱动器 D 中的卷没有标签。
卷的序列号是 FA1B-12CC
D:\Python 的目录
2017/12/26 18:39 .
2017/12/26 18:39 ..
2017/12/26 18:40 Python36
0 个文件 0 字节
3 个目录 76,675,727,360 可用字节
D:\Python>cd Python36
D:\Python\Python36>dir
驱动器 D 中的卷没有标签。
卷的序列号是 FA1B-12CC
D:\Python\Python36 的目录
2017/12/26 18:40 .
2017/12/26 18:40 ..
2017/12/26 18:40 DLLs
2017/12/26 18:39 Doc
2017/12/26 18:39 include
2017/12/26 18:40 Lib
2017/12/26 18:40 libs
2017/12/19 07:01 30,334 LICENSE.txt
2017/12/19 07:01 379,756 NEWS.txt
2017/12/19 06:58 100,504 python.exe
2017/12/19 06:55 58,520 python3.dll
2017/12/19 06:55 3,610,776 python36.dll
2017/12/19 06:58 98,968 pythonw.exe
2017/12/26 18:40 Scripts
2017/12/26 18:40 tcl
2017/12/26 18:40 Tools
2016/06/09 22:53 87,888 vcruntime140.dll
7 个文件 4,366,746 字节
10 个目录 76,675,727,360 可用字节
D:\Python\Python36>cd Lib
D:\Python\Python36\Lib>cd ..
D:\Python\Python36>cd Scripts
D:\Python\Python36\Scripts>dir
驱动器 D 中的卷没有标签。
卷的序列号是 FA1B-12CC
D:\Python\Python36\Scripts 的目录
2017/12/26 18:40 .
2017/12/26 18:40 ..
2017/12/26 18:40 98,160 easy_install-3.6.exe
2017/12/26 18:40 98,160 easy_install.exe
2017/12/26 18:40 98,132 pip.exe
2017/12/26 18:40 98,132 pip3.6.exe
2017/12/26 18:40 98,132 pip3.exe
5 个文件 490,716 字节
2 个目录 76,675,727,360 可用字节
D:\Python\Python36\Scripts>pip install requests
Collecting requests
Downloading requests-2.18.4-py2.py3-none-any.whl (88kB)
46% |██████████████▊ | 40kB 22kB/s eta 0:00:0
57% |██████████████████▌ | 51kB 16kB/s eta 0:
69% |██████████████████████▏ | 61kB 20kB/s et
80% |█████████████████████████▉ | 71kB 18kB/s
92% |█████████████████████████████▌ | 81kB 21
100% |████████████████████████████████| 92kB
21kB/s
Collecting urllib3<1.23,>=1.21.1 (from requests)
Downloading urllib3-1.22-py2.py3-none-any.whl (132kB)
38% |████████████▍ | 51kB 7.3kB/s eta 0:00:12
46% |██████████████▉ | 61kB 8.7kB/s eta 0:00:
54% |█████████████████▍ | 71kB 9.8kB/s eta 0:
61% |███████████████████▉ | 81kB 10kB/s eta 0
69% |██████████████████████▎ | 92kB 10kB/s et
77% |████████████████████████▊ | 102kB 9.9kB/
85% |███████████████████████████▎ | 112kB 10k
92% |█████████████████████████████▊ | 122kB 1
100% |████████████████████████████████| 133k
B 6.3kB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests)
Downloading chardet-3.0.4-py2.py3-none-any.whl (133kB)
46% |██████████████▊ | 61kB 12kB/s eta 0:00:0
53% |█████████████████▏ | 71kB 11kB/s eta 0:0
61% |███████████████████▋ | 81kB 12kB/s eta 0
69% |██████████████████████▏ | 92kB 13kB/s et
76% |████████████████████████▋ | 102kB 11kB/s
84% |███████████████████████████ | 112kB 11kB
92% |█████████████████████████████▌ | 122kB 1
99% |████████████████████████████████| 133kB
100% |████████████████████████████████| 143k
B 14kB/s
Collecting idna<2.7,>=2.5 (from requests)
Downloading idna-2.6-py2.py3-none-any.whl (56kB)
54% |█████████████████▍ | 30kB 16kB/s eta 0:0
72% |███████████████████████▏ | 40kB 8.3kB/s
90% |█████████████████████████████ | 51kB 10k
100% |████████████████████████████████| 61kB
12kB/s
Collecting certifi>=2017.4.17 (from requests)
Downloading certifi-2018.1.18-py2.py3-none-any.whl (151kB)
40% |█████████████ | 61kB 8.7kB/s eta 0:00:11
47% |███████████████▏ | 71kB 7.9kB/s eta 0:00
54% |█████████████████▎ | 81kB 9.0kB/s eta 0:
60% |███████████████████▌ | 92kB 8.7kB/s eta
67% |█████████████████████▋ | 102kB 9.2kB/s e
74% |███████████████████████▊ | 112kB 8.5kB/s
81% |██████████████████████████ | 122kB 8.9kB
87% |████████████████████████████ | 133kB 7.9
94% |██████████████████████████████▎ | 143kB
100% |████████████████████████████████| 153k
B 12kB/s
Installing collected packages: urllib3, chardet, idna, certifi, requests
Successfully installed certifi-2018.1.18 chardet-3.0.4 idna-2.6 requests-2.18.4
urllib3-1.22
D:\Python\Python36\Scripts>
下载后的位置,好像pip install会把第三库依赖的库,也帮你下载好。
2.如果用的是python2.7,执行如下代码块会报错:
D:\Python27\python.exe E:/MyCodes/Python27/20180130/Test.py
Traceback (most recent call last):
File "E:/MyCodes/Python27/20180130/Test.py", line 9, in
file = open('taobao_test.txt','w',encoding='utf-8')
TypeError: 'encoding' is an invalid keyword argument for this function
后来忽然意识到是python版本的原因,看了python2.7.9和3.6.4的docs,发现2.7.9的open函数只有两个参数,而3.6.4有三个参数。