关注
也来凑个热闹吧,直接 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 += '![img](' + item.img + ') \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
相关推荐
点赞 评论 收藏
转发
04-17 16:24
Java 点赞 评论 收藏
转发
04-15 11:06
腾讯_csig_机器学习算法研究(实习员工) 点赞 评论 收藏
转发
牛客热帖
正在热议
# 和牛牛一起刷题打卡 #
10296次浏览 880人参与
# 通信硬件薪资爆料 #
251174次浏览 2368人参与
# 牛客帮帮团来啦!有问必答 #
1062377次浏览 16059人参与
# 机械制造薪资爆料 #
348699次浏览 4103人参与
# 晒一晒我的offer #
3733468次浏览 57648人参与
# 我想象的工作vs实际工作 #
104546次浏览 1690人参与
# 面试中,你被问过哪些奇葩问题? #
19406次浏览 150人参与
# 你收到了团子的OC了吗 #
526095次浏览 6244人参与
# 毕业租房也有小确幸 #
38667次浏览 3212人参与
# 金融银行面经 #
12952次浏览 209人参与
# 你怎么评价今年的春招? #
10027次浏览 165人参与
# 提前批和秋招有什么区别 #
28990次浏览 696人参与
# 春招你拿到offer了吗 #
398666次浏览 5750人参与
# 秋招开了,你想投哪些公司呢 #
132679次浏览 3431人参与
# 本周投递记录 #
218471次浏览 5342人参与
# 实习生应该准时下班吗 #
88695次浏览 650人参与
# 字节跳动工作体验 #
73583次浏览 2022人参与
# 我发现了面试通关密码 #
378212次浏览 6991人参与
# 腾讯工作体验 #
151539次浏览 1479人参与
# 浅聊一下我实习的辛苦费 #
100382次浏览 1015人参与