关注
也来凑个热闹吧,直接 python + selenium + chrome 来抓的,下面是结果+代码
#coding=utf-8
# 测试运行环境: ubuntu 14.04 python 2.7.6 chrome
# 需要安装 selenim chromedriver
from selenium import webdriver
from selenium.webdriver.common.by import By
import sys
GBK = 'gbk'
def logToFile(tag, msg):
logFile = open('log', 'w')
out = tag + '--\n' + msg
logFile.write(out)
def log(tag, msg):
print tag, ' -- '
print msg
def defLog(msg):
log('out', msg)
# 保存零食信息
class Item:
def __init__(self):
self.CODE = 'utf-8'
# 输出内容到markdown文件中
class MarkdownWriter:
def __init__(self, name='out.md'):
mdFile = open(name, 'w')
self.mdFile = mdFile
def writeContent(self, content):
self.mdFile.write(content)
def writeItems(self, title, items):
# 组装markdown格式
content = '### ' + title + ' \n'
for item in items:
content += '#### ' + item.title + ' \n'
content += ' \n'
content += '[goto](' + item.url + ') \n'
content += 'money: ' + item.money + ' \n'
content += 'store: ' + item.store + ' \n'
content += '\n\n'
self.mdFile.write(content)
class TaoBaoSpider:
def __init__(self):
driver = webdriver.Chrome()
self.driver = driver
def getUrl(self, url):
print 'start get ...'
# 通过chrome加载url包括js脚本
self.driver.get(url)
print 'get finished ...'
def getHtmlWithJs(self):
return self.driver.page_source
def getElements(self):
print 'get item ...'
els = self.driver.find_elements(By.CSS_SELECTOR, "li[class=' item item-border'")
return els
def getContent(self, element):
item = Item()
# 从获取的html页面中获取需要的信息并封装到item类中
item.img = element.find_element_by_tag_name('img').get_attribute('src')
item.money = element.find_element(By.CSS_SELECTOR, "div[class='price child-component clearfix'").find_element_by_tag_name('strong').text
titleElement = element.find_element(By.CSS_SELECTOR, "div[class='title child-component'").find_element_by_class_name('J_AtpLog')
item.title = titleElement.text
item.url = titleElement.get_attribute('href')
item.store = element.find_element(By.CSS_SELECTOR, "div[class='seller child-component clearfix'").find_element_by_tag_name('a').text
return item
def start(self, url):
self.url = url
self.getUrl(url)
els = self.getElements()
items = []
for e in els:
item = self.getContent(e)
items.append(item)
return items
def main():
# 设置下编码
reload(sys)
sys.setdefaultencoding('utf-8')
url = 'https://world.taobao.com/search/search.htm?_ksTS=1478358034370_312&spm=a21bp.7806943.20151106.1&search_type=0&_input_charset=utf-8&navigator=all&json=on&q=%E5%A5%B3%E6%9C%8B%E5%8F%8B%20%E9%9B%B6%E9%A3%9F&cna=Eg9NDplivkkCAXuCB323%2Fsy9&callback=__jsonp_cb&abtest=_AB-LR517-LR854-LR895-PR517-PR854-PR895'
# 爬虫运行
spider = TaoBaoSpider()
items = spider.start(url)
# 输出到markdown文件中
writer = MarkdownWriter('taobao.md')
writer.writeItems('零食列表', items)
main()
更具体些的可以上这里看:https://github.com/5A59/Practice
查看原帖
点赞 1
相关推荐

点赞 评论 收藏
分享
牛客热帖
更多
- 1... 脱下孔乙己长衫,浅聊一下就业下沉!3.9W
- 2... 美团java后端日常实习一二面1.5W
- 3... 腾讯PCG QQ后台开发一面1.3W
- 4... 腾讯/字节/快手 前端面经汇总1.0W
- 5... 【未来准备7】就业下沉时代,如何摆脱困境9014
- 6... 实习入职第一天,应该做点啥❓7760
- 7... 腾讯2025暑期实习提前批前端开发面经(已OC)5989
- 8... [26届四段大厂]“HR面致命题!腾讯字节亲测”5188
- 9... 字节前端日常实习 oc 总结4876
- 10... 【有奖互动】你问过DeepSeek什么意想不到的问题?4850
正在热议
更多
# 听劝,这个简历怎么改 #
18288次浏览 239人参与
# 你见过最离谱的招聘要求是什么? #
146232次浏览 871人参与
# 水滴春招 #
34058次浏览 570人参与
# 你想留在一线还是回老家? #
16589次浏览 236人参与
# 分享一个让你热爱工作的瞬间 #
16490次浏览 174人参与
# 25届如何提前做秋招准备? #
145527次浏览 2288人参与
# 入职第四天,心情怎么样 #
12701次浏览 88人参与
# 面试被问“你的缺点是什么?”怎么答 #
11028次浏览 218人参与
# 参加完秋招的机械人,还参加春招吗? #
27651次浏览 281人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
20716次浏览 415人参与
# 机械校招之路总结 #
80285次浏览 1759人参与
# 第一份工作应该选高薪还是热爱? #
5188次浏览 83人参与
# 如果重来一次你还会读研吗 #
156917次浏览 1716人参与
# 租房找室友 #
8520次浏览 53人参与
# 职场新人生存指南 #
200995次浏览 5563人参与
# 地方国企笔面经互助 #
18109次浏览 26人参与
# 简历无回复,你会继续海投还是优化再投? #
49008次浏览 564人参与
# 读研or工作,哪个性价比更高? #
26504次浏览 357人参与
# 你们的毕业论文什么进度了 #
905111次浏览 8995人参与
# 文科生还参加今年的春招吗 #
4460次浏览 32人参与
# 百度工作体验 #
178224次浏览 1780人参与