简单的Python爬虫应用_学习笔记002
admin
2023-07-30 20:31:54
0

从京东网站抓取_006

目标:抓取的内容组织成如下字典形式

[{\'url\' : \'xxxxxxxxx\'
 \'price\' : \'xxx\'
 \'id\' : \'xxx\'
 \'img\' : \'xxx\'
 \'title\' : \'xxx\'
}#宝贝1
{\'url\' : \'xxxxxxxxx\'
 \'price\' : \'xxx\'
 \'id\' : \'xxx\'
 \'img\' : \'xxx\'
 \'title\' : \'xxx\'
}#宝贝2
{\'url\' : \'xxxxxxxxx\'
 \'price\' : \'xxx\'
 \'id\' : \'xxx\'
 \'img\' : \'xxx\'
 \'title\' : \'xxx\'
}#宝贝3
........
]

分析及组织访问网址
字段以键对值的形式表示,其中psort表示产品以某种形式进行排序,page表示当前是第几页,keyword表示搜索产品的关键词,可以通过建立一个函数,包含此三个参数来构建访问网址,以此达到抓取特定产品信息的目的

import urlparse
import urllib
from bs4 import BeautifulSoup
url = \"http://search.jd.com/Search?keyword=BOSE&enc=utf-8&qr=%E5%B7%B4%E5%A1%9E&qrst=correct&et=4&rt=1&stop=1&click=&psort=3\"
parsed = urlparse.urlparse(url)
d = urlparse.parse_qs(parsed.query,True)
\"\"\"
{\'qrst\': [\'correct\'], 
 \'rt\': [\'1\'], 
 \'enc\': [\'utf-8\'], 
 \'keyword\': [\'BOSE\'], 
 \'stop\': [\'1\'], 
 \'psort\': [\'3\'], 
 \'qr\': [\'\\xe5\\xb7\\xb4\\xe5\\xa1\\x9e\'], 
 \'et\': [\'4\'],
 \'page\':[\'1\'] 
 \'click\': [\'\']}
 \"\"\"

构建函数访问特定网址

def get_content_from_jd(keyword = \'Bose\', page = \'\', product_sort = \'\'):
    params = {\'qrst\': \'correct\', 
              \'rt\': \'1\', 
              \'enc\': \'utf-8\', 
              \'keyword\': keyword, 
              \'stop\': \'1\', 
              \'psort\': product_sort, 
              \'et\': \'4\',
              \'page\': page,
              \'click\': \'\'} #建立参数,其中keyword,psort,page通过函数参数传入
    html = urllib.urlencode(params)
    url = \'http://search.jd.com/Search?\' + html #构建访问网址
    html_content = urllib.urlopen(url) #抓取网址内容
    content = html_content.read()
    html_content.close()
    return content

抓取商品ID

if __name__ == \'__main__\':
    bose_info = get_content_from_jd(\'Bose\', \'1\', \'3\')  #keyword = Bose, page = 1, product_sort = 3 3为按销量排序
    bose_content = BeautifulSoup(bose_info)
    bose_div = bose_content.find_all(\'div\', class_ = \'lh-wrap\') #每件商品以lh-wrap关键字区分
    #  #id号以strong区分
    for i in bose_div:
        print i.strong[\'class\'][0]

返回内容

J_1150767
J_1225287
J_1225340
J_1150768
J_1150841
J_1237666
J_1150698
J_1237665
J_1150821
J_1150753
J_1237663
J_1182133
J_1150733
J_1253123
J_1253126
J_1150701
J_1291112
J_1253232
J_1150689
J_1150690
J_1150699
J_1150704
J_1255545
J_1237659
J_1253213
J_1253226
J_1150759
J_1150760
J_1150766
J_1291110

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...