为什么爬虫用python?( 爬取淘宝存到数据库 )
2018-05-12 00:09
295 查看
可以做爬虫的语言有很多,如 PHP、Java、C/C++、Python等等...
1)PHP语言
虽然是世界上最好的语言 ,但是他天生不是干这个的,而且对多线程、异步支持不够好,并发处理能力很弱。爬虫是工具性程序,对速度和效率要求比较高。
2)Java 语言
的网络爬虫生态圈也很完善,是Python爬虫最大的对手 。但是Java语言本身很笨重,代码量很大。 重构成本比较高,任何修改都会导致代码的大量变动。爬虫经常需要修改部分采集代码。
3)C/C++语言
运行效率和性能几乎最强,但是学习成本很高,代码成型比较慢,是很慢 。 能用C/C++做爬虫,只能说是能力的表现,但是不是正确的选择。
4)Python 语言
语法优美、代码简洁、开发效率高、支持的模块多,相关的HTTP请求模块和HTML解析模块非常丰富。 还有强大的爬虫Scrapy框架,以及成熟高效的 scrapy-redis分布式策略。而且,调用其他接口也非常方便(胶水语言)
在此对于各语言爬虫代码就不一一比较了...
来爬一下淘宝吧import re import pymongo from config import * from selenium import webdriver from bs4 import BeautifulSoup from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.common.exceptions import TimeoutException from selenium.webdriver.support import expected_conditions as EC driver = webdriver.PhantomJS(service_args=SERVICE_ARGS) wait = WebDriverWait(driver, 10) driver.set_window_size(width=1360, height=768) def search(): print('正在搜素...') try: driver.get('https://www.taobao.com/') # 设置加载时间, input = wait.until( EC.presence_of_element_located((By.CSS_SELECTOR, "#q")) ) # 输入框 input.send_keys('美食') # 获取搜索点击按钮 submit = driver.find_element_by_css_selector('#J_TSearchForm > div.search-button > button') # 点击搜索 submit.click() # 获取页数 total_page_num = driver.find_element_by_css_selector('#mainsrp-pager > div > div > div > div.total').text total_num = re.compile('(\d+)').search(total_page_num).group(1) # 获取页面详情 get_products() return int(total_num) except TimeoutException: return search() # 获取下页 def next_page(page_number): print('正在翻页%s', page_number) try: input = wait.until( EC.presence_of_element_located((By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.form > input")) ) # 输入框 input.clear() input.send_keys(page_number) # 获取搜索点击按钮 submit = driver.find_element_by_css_selector('#mainsrp-pager > div > div > div > div.form > span.btn.J_Submit') # 点击搜索 submit.click() # 根据高亮判断翻页是否成功 wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > ul > li.item.active > span'), str(page_number))) # 获取页面详情 get_products() except TimeoutException: return next_page(page_number) # 解析页面 def get_products(): # 判断元素是否已经加载下来 wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-itemlist .items .item'))) page = driver.page_source # print(page) html = BeautifulSoup(page, 'lxml') items = html.select('#mainsrp-itemlist .items .item') print(len(items)) for item in items: # 商品图片连接,第一种连接 image = item.select('img')[0].attrs['data-src'] if not image : # 第二种链接 image = item.select('img')[0].attrs['data-ks-lazyload'] # 封装写入mongodb product = { 'image': 'https:'+image, 'price': item.select('.price')[0].text.strip().replace('¥', ''), 'product_url': item.select('.J_ClickStat')[0].attrs['data-href'], # 物品的连接 'sel_num': item.select('.deal-cnt')[0].text[:-3], 'title':item.select('.title')[0].text.strip(), 'location': item.select('.location')[0].text.strip(), 'shop': item.select('.shop')[0].text.strip(), } # print(product) save_to_mongo(product) # 写入mongo def save_to_mongo(result): try: client = pymongo.MongoClient(MONGO_URL) db = client[MONGO_DB] try: if db[MONGO_TABLE].insert(result): print('写入数据库成功', result) except Exception: print('写入mongod失败!!') except Exception: print('连接mongo失败!') def main(): try: total_page_num = search() for i in range(2, total_page_num+1): next_page(i) except Exception as e: print(e) finally: driver.close() if __name__ == '__main__': main()
阅读更多
相关文章推荐
- 关于Python爬虫爬淘宝mm详细教程+存入数据库
- Python3 大型网络爬虫实战 004 — scrapy 大型静态商城网站爬虫项目编写及数据写入数据库实战 — 实战:爬取淘宝
- Python爬虫实战五之模拟登录淘宝并获取所有订单
- Python爬虫小实践:寻找失踪人口,爬取失踪儿童信息并写成csv文件,方便存入数据库
- 简单的抓取淘宝关键字信息、图片的Python爬虫|Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第二篇)
- python爬虫01-创建一个简单的爬虫(附赠爬取的100G某小说网数据库)
- python爬虫(14)获取淘宝MM个人信息及照片(下)(windows版本)
- Python爬虫实战(4):抓取淘宝MM照片
- python 爬虫 一键爬取 淘宝天猫宝贝页面主图颜色图和详情图
- Python爬虫之Emoj表情无法插入数据库Mysql
- python爬虫获取淘宝妹子信息和相片
- 运维学python之爬虫中级篇(九)Python3 MySQL 数据库连接
- [置顶] 【python 淘宝爬虫】淘宝信誉分抓取
- Python于allitebooks.com爬虫书籍名称导入数据库
- python3爬虫 爬取图片,爬取新闻网站文章并保存到数据库
- 简单的抓取淘宝图片的Python爬虫
- python 爬虫爬取几十家门店在美团外卖上的排名,并插入数据库,最后在前端显示
- 为什么python适合写爬虫?(python到底有啥好的?!)
- Python 爬虫知识点 - 淘宝商品检索结果抓包分析
- python爬虫之:淘宝商品搜索爬虫(收集商品信息/下载详情图)