title = ’ ‘.join(title).replace(’\n’, ‘’).replace(‘\r’, ‘’).replace(’ ‘,’')
price = ’ '.join(price)
number = ’ ‘.join(number).replace(’\n’, ‘’).replace(‘\r’, ‘’).replace(’ ‘,’')
category = ’ '.join(category)
term = ’ ‘.join(term).replace(’\n’, ‘’).replace(‘\r’, ‘’).replace(’ ‘,’')
groups = ’ ‘.join(groups).replace(’\n’, ‘’).replace(‘\r’, ‘’).replace(’ ‘,’')
Range = ’ ‘.join(Range).replace(’\n’, ‘’).replace(‘\r’, ‘’).replace(’ ‘,’')
img_url = ’ '.join(img_url)
item.append(title)
item.append(price)
item.append(number)
item.append(category)
item.append(term)
item.append(groups)
item.append(Range)
item.append(img_url)
item = tuple(item)
information.append(item)
#print(information)
return information
def insert_sqlserver(self, information):
连接本地数据库服务,创建游标对象
db = pymssql.connect(‘.’, ‘sa’, ‘yuan427’, ‘test’) #服务器名,账户,密码,数据库名
if db:
print(“连接成功!”)
cursor= db.cursor()
try:
插入sql语句
sql = “insert into MPSB (title,price,number,category,term,groups,Range,img_url) values (%s,%s,%s,%s,%s,%s,%s,%s)”
执行插入操作
cursor.executemany(sql,information)
db.commit()
print(‘成功载入…’ )
except Exception as e:
db.rollback()
print(str(e))
关闭游标,断开数据库
cursor.close()
db.close()
实现主要逻辑
def run(self):
for type_num in range(1,46):
1.拼接网页获取每个类别的页数page
url = self.baseurl % (1,type_num)
html_str = self.parse_url(url)
page = self.get_page_num(html_str) + 1
for i in range(1,page):
url = self.baseurl % (i,type_num)
x = 0
while x<1:
2.发送请求,获取相应
html_str = self.parse_url(url)
3.获取第一页中39个详情页地址
content_list= self.get_content_list(html_str)
4.获取39个详情页信息
information = self.get_information(content_list)
5.入库
self.insert_sqlserver(information)
x += 1
if name == “main”:
trademarkSpider = TrademarkSpider()
trademarkSpider.run()
先讲讲我的整体思路再逐步解释:
-
第一步:构造主页的URL地址
-
第二步:发送请求,获取响应
-
第三步:获取第一页中39个详情页地址
-
第四步:获取39个详情页信息
-
第五步:存入SqlServer数据库
-
第六步:实现主页翻页(1-91页)
我们先手动翻页,1-3页:
http://www.mp.cc/search/1?category=25
http://www.mp.cc/search/2?category=25
http://www.mp.cc/search/3?category