萌新的Python学习日记 - 爬虫无影 - 爬取58同城指定页面的内容:bj.58.com
2018-03-19 17:57
741 查看
博客第六天测试页面:58:http://bj.58.com/pbdn/?PGTID=0d305a36-0000-1b29-d7c1-bc8b28eaff0b&ClickID=5,目的:爬取页面中个人分类列表中每个对象的指定信息,
工程内容:Python3.5,jupyter notebook工具包:requests, BeautifulSoup,代码(不可翻页):# 获取个人商户item
import requests,time,random
from bs4 import BeautifulSoup as bs
# url = 'http://sz.58.com/pingbandiannao/31395491489090x.shtml' #此为测试店铺商户的页面
url = 'http://zhuanzhuan.58.com/detail/828613753956597767z.shtml' #此为测试个人商户的页面
# def getitem(url): #定义函数获取单个item的信息,注:此函数这次并未使用
# web = requests.get(url) #注:此函数不包含view浏览次数
# soup = bs(web.text,'lxml')
# title = soup.select('.info_titile') #解析item名称
# price = soup.select('.price_now') #解析item价格
# area = soup.select('.palce_li > span > i') #解析item地区
# data = {
# 'title' : title[0].text,
# 'price' : price[0].text,
# 'area' : area[0].text
# }
# print(data) #print结果以便观测和修改
#注:此函数不需赋值操作,故没有设置返回
# getitem(url) #测试函数用
def getlink(sell = 0): #定义函数获取链接
urls = [] #用于存储页面所有链接
list = 'http://bj.58.com/pbdn/{}/pn2/'.format(str(sell)) #用于动态指定链接(0为个人,1为商户)
web = requests.get(list)
soup = bs(web.text,'lxml')
# links = soup.select('td.t a.t') #定位页面中的链接
for link in soup.select('td.t a.t'):
urls.append(link.get('href')) #添加函数
# print(link.get('href'))
return urls #此函数需供赋值,所以设定返回
# getlink()
# url = 'http://zhuanzhuan.58.com/detail/828613753956597767z.shtml'
def getview(url): #定义函数获取view次数
w = requests.get(url)
so = bs(w.text,'lxml')
view = so.select('span.look_time') #定位view次数位置
return view
# print(view)
# getview(url)
def getinfo(sell = 0): #定义函数获取个人商户列表页面所有item的详细信息
urls = getlink(sell) #调用函数获取该页面所有连接
for url in urls: #针对每个链接进行操作
web = requests.get(url)
soup = bs(web.text,'lxml')
title = soup.select('.info_titile') #获取item名称
price = soup.select('.price_now') #获取item价格
area = soup.select('.palce_li > span > i') #获取item地区
view = getview(url) #调用函数获取item浏览次数
data = { #格式化保存函数
'title' : title[0].text, #页面中每项内容都只有一个,使用切片加.text方法直接获取文本内容
'price' : price[0].text,
'area' : area[0].text,
'view' : view[0].text
}
print(data) #print以观察结果
getinfo() #调用函数获取目标信息
print结果:
注:
1. 页面随时可能刷新,故隔一段时间后再运行代码后得到的print结果可能和之前的不一样,
2. 代码有些繁琐,因为这是练习用的,再加上网站的更新,原本目的是同时获取个人和商户列表的所有item,但是现在没办法做到。
总结:
1. 花了很多时间,因为最开始得到的练习目标很不明确,而且开始写代码时网站应该更新过了,所以跟源代码有一定区别,
2. 切片的使用在有些时候非常方便。
工程内容:Python3.5,jupyter notebook工具包:requests, BeautifulSoup,代码(不可翻页):# 获取个人商户item
import requests,time,random
from bs4 import BeautifulSoup as bs
# url = 'http://sz.58.com/pingbandiannao/31395491489090x.shtml' #此为测试店铺商户的页面
url = 'http://zhuanzhuan.58.com/detail/828613753956597767z.shtml' #此为测试个人商户的页面
# def getitem(url): #定义函数获取单个item的信息,注:此函数这次并未使用
# web = requests.get(url) #注:此函数不包含view浏览次数
# soup = bs(web.text,'lxml')
# title = soup.select('.info_titile') #解析item名称
# price = soup.select('.price_now') #解析item价格
# area = soup.select('.palce_li > span > i') #解析item地区
# data = {
# 'title' : title[0].text,
# 'price' : price[0].text,
# 'area' : area[0].text
# }
# print(data) #print结果以便观测和修改
#注:此函数不需赋值操作,故没有设置返回
# getitem(url) #测试函数用
def getlink(sell = 0): #定义函数获取链接
urls = [] #用于存储页面所有链接
list = 'http://bj.58.com/pbdn/{}/pn2/'.format(str(sell)) #用于动态指定链接(0为个人,1为商户)
web = requests.get(list)
soup = bs(web.text,'lxml')
# links = soup.select('td.t a.t') #定位页面中的链接
for link in soup.select('td.t a.t'):
urls.append(link.get('href')) #添加函数
# print(link.get('href'))
return urls #此函数需供赋值,所以设定返回
# getlink()
# url = 'http://zhuanzhuan.58.com/detail/828613753956597767z.shtml'
def getview(url): #定义函数获取view次数
w = requests.get(url)
so = bs(w.text,'lxml')
view = so.select('span.look_time') #定位view次数位置
return view
# print(view)
# getview(url)
def getinfo(sell = 0): #定义函数获取个人商户列表页面所有item的详细信息
urls = getlink(sell) #调用函数获取该页面所有连接
for url in urls: #针对每个链接进行操作
web = requests.get(url)
soup = bs(web.text,'lxml')
title = soup.select('.info_titile') #获取item名称
price = soup.select('.price_now') #获取item价格
area = soup.select('.palce_li > span > i') #获取item地区
view = getview(url) #调用函数获取item浏览次数
data = { #格式化保存函数
'title' : title[0].text, #页面中每项内容都只有一个,使用切片加.text方法直接获取文本内容
'price' : price[0].text,
'area' : area[0].text,
'view' : view[0].text
}
print(data) #print以观察结果
getinfo() #调用函数获取目标信息
print结果:
注:
1. 页面随时可能刷新,故隔一段时间后再运行代码后得到的print结果可能和之前的不一样,
2. 代码有些繁琐,因为这是练习用的,再加上网站的更新,原本目的是同时获取个人和商户列表的所有item,但是现在没办法做到。
总结:
1. 花了很多时间,因为最开始得到的练习目标很不明确,而且开始写代码时网站应该更新过了,所以跟源代码有一定区别,
2. 切片的使用在有些时候非常方便。
相关文章推荐
- 萌新的Python学习日记 - 爬虫无影 - 爬取58二手车指定页面内容存储并查询:58二手车
- 萌新的Python学习日记 - 爬虫无影 - 使用BeautifulSoup + css selector 抓取自己想要网页内容
- 萌新的Python学习日记 - 爬虫无影 - 添加headers抓取动态网页内容:TripAdvisor(上)
- 萌新的Python学习日记 - 爬虫无影 - 使用BeautifulSoup + css selector 抓取动态网页内容:Knewone
- 萌新的Python学习日记 - 爬虫无影 - 使用BeautifulSoup + urlretrieve 抓取并保存图片:weheartit
- 萌新的Python学习日记 - 爬虫无影 - 爬取豆瓣电影top250并入库:豆瓣电影top250
- 【爬虫学习3】Python爬取动态页面思路(一)
- python——爬虫学习——基于bs4库的HTML内容查找方法-(3)
- PYTHON爬虫学习-糗事百科内容爬取
- Python学习(一)获取指定文件夹下的文件名及其内容
- Python爬虫学习_多进程爬取58同城
- python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容
- 第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器
- Python 简易网络爬虫的编写——抓取任意页面数目百度百科内容
- Python爬虫学习日记:模拟带有cookie的登陆
- python3 爬虫 HTML 指定内容
- Python3学习(34)--简单网页内容抓取(爬虫入门一)
- python爬虫初级--获取指定页面上的菜单名称以及链接,然后导出
- python爬虫学习——爬取糗百页面段子
- C++和python如何获取百度搜索结果页面下信息对应的真实链接(百度搜索爬虫,可指定页数)