在使用爬虫时,运用爬虫无论是bs4的find还是xpath表达式都不能够正确地去使用文本定位来定位到百度百科中关键词的别名这一相关文本的标签,也就得不到别名的文本信息,是为什么呢?希望能指正!
import requests
from bs4 import BeautifulSoup
import random
import time
if __name__ == '__main__':
headers = {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"Connection": "keep-alive",
"Referer": "https://baike.baidu.com/item/^%^E5^%^8C^%^97^%^E5^%^B1^%^B1^%^E7^%^BE^%^8A/1089112?fromModule=lemma_search-history",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "same-origin",
"Sec-Fetch-User": "?1",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.82",
"sec-ch-ua": "^\\^Not.A/Brand^^;v=^\\^8^^, ^\\^Chromium^^;v=^\\^114^^, ^\\^Microsoft",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "^\\^Windows^^"
}
cookies = {
"zhishiTopicRequestTime": "1689903240007",
"BAIKE_SHITONG": "^%^7B^%^22data^%^22^%^3A^%^22c219ff6dae7b59c54a503fe529ad2d0f37de765d874c527539600257ccedc2718f90cfedb8fb827cc68db4a991b4ff86ca4df3da0f9fe8a72e40d26fe51db552545e93dd725d3fe54420bcf0505ad2452f818b9a614c3815144b1f170cd05a03^%^22^%^2C^%^22key_id^%^22^%^3A^%^2210^%^22^%^2C^%^22sign^%^22^%^3A^%^22e7822233^%^22^%^7D",
"PSTM": "1688951526",
"BIDUPSID": "9DE1E373CC22EF37F7436A64F58FBE60",
"ZFY": "8R:Bi6Qat:AdAa7I0G24K4ADL1iuOV7uZfr6fLMbKQpbg:C",
"__bid_n": "18961ca15ed230482ab1d8",
"Hm_lvt_55b574651fcae74b0a9f1cf9c8d7c93a": "1689643940,1689664119,1689732776,1689903244",
"baikedeclare": "showed",
"BAIDUID": "C48C595E6A35C80844A1ADC626C5D946:FG=1",
"BAIDUID_BFESS": "C48C595E6A35C80844A1ADC626C5D946:FG=1",
"baikeVisitId": "6cd61756-9af9-4c70-84b0-ce4875ff7cc6",
"X_ST_FLOW": "0",
"Hm_lpvt_55b574651fcae74b0a9f1cf9c8d7c93a": "1689910587",
"ab_sr": "1.0"
".1_MWVmZTg3ODE1OWU4YWIxN2RmMGNmMmQ3YzQxNWU2OTg1NWM0ZjEwYjAyOTUwOWYwOGIzY2I1YjMyNDVlZDQ5YWY4ODYwZTViZDg5OWZjYThkOGQzNWM2NjJkOTI0N2Q4ZDE3Mzg3Zjg4MDI1MDkwMjc4NGU2MGUzOTdmN2Y5NWI4YThhMzFlZTkxYTRjYWQzMTYyNWUzMTRiZmQ2NGZkMQ==",
"BK_SEARCHLOG": "^%^7B^%^22key^%^22^%^3A^%^5B^%^22^%^E5^%^8C^%^97^%^E5^%^B1^%^B1^%^E7^%^BE^%^8A^%^22^%^2C"
"^%^22^%^E4^%^B8^%^AD^%^E5^%^8D^%^8E^%^E6^%^96^%^91^%^E7^%^BE^%^9A^%^22^%^2C^%^22^%^E5^%^A1"
"^%^94^%^E5^%^B0^%^94^%^E7^%^BE^%^8A^%^22^%^2C^%^22^%^E7^%^99^%^BD^%^E5^%^8F^%^91^%^E8^%^97"
"^%^93^%^E7^%^A7^%^91^%^22^%^2C^%^22^%^E5^%^96^%^9C^%^E9^%^A9^%^AC^%^E6^%^8B^%^89^%^E9^%^9B"
"^%^85^%^E6^%^96^%^91^%^E7^%^BE^%^9A^%^22^%^2C^%^22^%^E7^%^BC^%^85^%^E7^%^94^%^B8^%^E6^%^96"
"^%^91^%^E7^%^BE^%^9A^%^22^%^2C^%^22^%^E9^%^95^%^BF^%^E5^%^B0^%^BE^%^E6^%^96^%^91^%^E7^%^BE"
"^%^9A^%^22^%^2C^%^22^%^E8^%^B5^%^A4^%^E6^%^96^%^91^%^E7^%^BE^%^9A^%^22^%^2C^%^22^%^E8^%^B4"
"^%^A1^%^E5^%^B1^%^B1^%^E7^%^BE^%^9A^%^E7^%^89^%^9B^%^22^%^2C^%^22^%^E4^%^B8^%^8D^%^E4^%^B8"
"^%^B9^%^E7^%^BE^%^9A^%^E7^%^89^%^9B^%^22^%^5D^%^7D",
"RT": "^\\^z=1&dm=baidu.com&si=d9cf0a3f-c72a-4c18-80d6-6b8817bfb496&ss=lkc0oht6&sl=f&tt=5lw&bcn=https^%^3A"
"^%^2F^%^2Ffclog.baidu.com^%^2Flog^%^2Fweirwood^%^3Ftype^%^3Dperf&ld=ghnl&nu=468vwj63&cl=gipz&ul=gk13^^"
}
params = {
"fromModule": "lemma_search-box"
}
list1 = ['粗叶泥炭藓', '白发藓科', '桧叶白发藓', '泥炭藓科', '多纹泥炭藓', '粗叶泥炭藓', '藻苔科', '角叶藻苔', '藻苔', '石松类和蕨类植物 Lycophytes and Ferns', '石松科', '石杉属 (所有种)', '马尾杉属(所有种)', '水韭科', '水韭属 (所有种) *', '瓶尔小草科', '七指蕨', '带状瓶尔小草', '合囊蕨科', '观音座莲属(所有种)', '天星蕨', '金毛狗科', '金毛狗属(所有种)', '桫椤科', '桫椤科(所有种,小黑桫椤和粗\n齿桫椤除外)', '凤尾蕨科', '荷叶铁线蕨*', '水蕨属(所有种) *', '冷蕨科', '光叶蕨', '铁角蕨科', '对开蕨', '乌毛蕨科', '苏铁蕨', '水龙骨科', '中文名', '鹿角蕨', '裸子植物 Gymnosperms', '苏铁科', '苏铁属(所有种)', '银杏科', '银杏', '罗汉松科', '罗汉松属(所有种)', '柏科', '翠柏', '岩生翠柏', '红桧', '岷江柏木', '巨柏', '西藏柏木', '福建柏', '水松', '水杉', '台湾杉(秃杉)', '朝鲜崖柏', '崖柏', '越南黄金柏', '红豆杉科', '穗花杉属(所有种)', '海南粗榧', '贡山三尖杉', '篦子三尖杉', '白豆杉', '红豆杉属(所有种)', '榧树属(所有种)', '松科', '百山祖冷杉', '资源冷杉', '秦岭冷杉', '梵净山冷杉', '元宝山冷杉', '银杉', '中文名', '油杉属(所有种,铁坚油杉、云南\n油杉、油杉除外)', '大果青扦', '大别山五针松', '兴凯赤松', '红松', '华南五针松', '雅加松', '巧家五针松', '长白松', '毛枝五针松', '金钱松', '黄杉属(所有种)', '麻黄科', '斑子麻黄', '被子植物 Angiosperms', '莼菜科', '莼菜*', '睡莲科', '雪白睡莲*', '五味子科', '地枫皮', '大果五味子', '马兜铃科', '囊花马兜铃', '金耳环', '马蹄香', '肉豆蔻科', '风吹楠属(所有种)', '云南肉豆蔻', '木兰科', '长蕊木兰', '厚朴', '长喙厚朴', '大叶木兰', '馨香玉兰(馨香木兰)', '鹅掌楸(马褂木)', '香木莲', '中文名', '大叶木莲', '落叶木莲', '大果木莲', '厚叶木莲', '毛果木莲', '香子含笑(香籽含笑)', '广东含笑', '石碌含笑', '峨眉含笑', '圆叶天女花(圆叶玉兰)', '西康天女花(西康玉兰)', '华盖木', '峨眉拟单性木兰', '云南拟单性木兰', '合果木', '焕镛木(单性木兰)', '宝华玉兰', '番荔枝科', '蕉木', '文采木', '蜡梅科', '夏蜡梅', '莲叶桐科', '莲叶桐', '樟科', '油丹', '皱皮油丹', '茶果樟', '天竺桂', '油樟', '卵叶桂', '润楠', '舟山新木姜子', '闽楠', '浙江楠', '细叶楠', '楠木', '孔药楠', '中文名', '泽泻科', '拟花蔺*', '长喙毛茛泽泻*', '浮叶慈菇*', '水鳖科', '高雄茨藻*', '海菜花属(所有种) *', '冰沼草科', '冰沼草*', '翡若翠科', '芒苞草', '藜芦科', '重楼属(所有种,北重楼除外) *', '百合科', '荞麦叶大百合*', '贝母属(所有种) *', '秀丽百合*', '绿花百合*', '乳头百合*', '天山百合*', '青岛百合*', '郁金香属(所有种) *', '兰科', '香花指甲兰', '金线兰属(所有种) *', '白及*', '美花卷瓣兰', '独龙虾脊兰', '大黄花虾脊兰', '独花兰', '大理铠兰', '杜鹃兰', '兰属(所有种,被列入一级保护\n的美花兰和文山红柱兰除外。兔\n耳兰未列入名录)', '美花兰', '文山红柱兰', '杓兰属(所有种,被列入一级保\n护的暖地杓兰除外。离萼杓兰未\n列入名录)', '暖地杓兰', '丹霞兰属(所有种)', '石斛属(所有种,被列入一级保\n护的曲茎石斛和霍山石斛除外) *', '曲茎石斛*', '霍山石斛*', '原天麻*', '天麻*', '手参*', '西南手参*', '血叶兰', '兜兰属(所有种,被列入二级保\n护的带叶兜兰和硬叶兜兰除外)', '带叶兜兰', '硬叶兜兰', '海南鹤顶兰', '文山鹤顶兰', '罗氏蝴蝶兰', '麻栗坡蝴蝶兰', '华西蝴蝶兰', '象鼻兰', '独蒜兰属(所有种)', '火焰兰属(所有种)', '钻喙兰', '大花万代兰', '深圳香荚兰', '鸢尾科', '水仙花鸢尾*', '天门冬科', '海南龙血树', '剑叶龙血树', '兰花蕉科', '海南兰花蕉', '云南兰花蕉', '姜科', '海南豆蔻*', '宽丝豆蔻*', '中文名', '细莪术*', '茴香砂仁', '长果姜', '棕榈科', '董棕', '琼棕', '矮琼棕', '水椰*', '小钩叶藤', '楠木属', '香蒲科', '无柱黑三棱*', '禾本科', '短芒芨芨草*', '沙芦草', '三刺草', '山涧草', '流苏香竹', '莎禾', '阿拉善披碱草*', '黑紫披碱草*', '短柄披碱草*', '内蒙披碱草*', '紫芒披碱草*', '新疆披碱草*', '无芒披碱草', '毛披碱草', '铁竹', '贡山竹', '内蒙古大麦', '纪如竹', '水禾*', '青海以礼草', '青海固沙草*', '稻属(所有种) *', '华山新麦草', '三蕊草', '拟高梁*', '箭叶大油芒', '中华结缕草*', '罂粟科', '石生黄堇', '久治绿绒蒿', '红花绿绒蒿', '毛瓣绿绒蒿', '防己科', '古山龙', '藤枣', '小檗科', '八角莲属(所有种)', '小叶十大功劳', '靖西十大功劳', '桃儿七', '星叶草科', '独叶草', '毛茛科', '北京水毛茛*', '槭叶铁线莲*', '黄连属(所有种) *', '莲科', '莲*', '昆栏树科', '水青树', '芍药科', '芍药属牡丹组(所有种,被列入\n一级保护的卵叶牡丹和紫斑牡丹\n除外,牡丹未列入名录) *', '卵叶牡丹*', '紫斑牡丹*', '白花芍药*', '阿丁枫科', '赤水蕈树', '金缕梅科', '山铜材', '长柄双花木', '四药门花', '银缕梅', '连香树科', '连香树', '景天科', '长白红景天', '大花红景天', '长鞭红景天', '喜马红景天', '四裂红景天', '红景天', '库页红景天', '圣地红景天', '唐古红景天', '粗茎红景天', '云南红景天', '小二仙草科', '乌苏里狐尾藻*', '锁阳科', '锁阳*', '葡萄科', '百花山葡萄', '浙江蘡薁', '蒺藜科', '四合木', '豆科', '沙冬青', '棋子豆', '紫荆叶羊蹄甲', '丽豆*', '黑黄檀', '海南黄檀', '降香', '卵叶黄檀', '格木', '山豆根*', '绒毛皂荚', '野大豆*', '烟豆*', '短绒野大豆*', '胀果甘草', '甘草', '浙江马鞍树', '红豆属(所有种,被列入一级保护\n的小叶红豆除外。)', '小叶红豆', '冬麻豆属(所有种)', '油楠', '越南槐', '海人树科', '海人树', '蔷薇科', '太行花', '山楂海棠*', '丽江山荆子*', '新疆野苹果*', '锡金海棠*', '绵刺*', '新疆野杏*', '新疆樱桃李*', '甘肃桃*', '蒙古扁桃*', '光核桃*', '矮扁桃(野巴旦,野扁桃) *', '政和杏*', '银粉蔷薇', '小檗叶蔷薇', '单瓣月季花', '广东蔷薇', '亮叶月季', '大花香水月季', '中甸刺玫', '玫瑰', '胡颓子科', '翅果油树', '鼠李科', '小勾儿茶', '榆科', '长序榆', '大叶榉树', '桑科', '南川木波罗', '奶桑', '川桑*', '长穗桑*', '荨麻科', '光叶苎麻*', '长圆苎麻*', '壳斗科', '华南锥', '西畴青冈', '台湾水青冈', '三棱栎', '霸王栎', '尖叶栎', '胡桃科', '喙核桃', '贵州山核桃', '桦木科', '普陀鹅耳枥', '天台鹅耳枥', '天目铁木', '葫芦科', '野黄瓜*', '四数木科', '四数木', '秋海棠科', '蛛网脉秋海棠*', '阳春秋海棠*', '黑峰秋海棠*', '古林箐秋海棠*', '古龙山秋海棠*', '海南秋海棠*', '香港秋海棠*', '卫矛科', '永瓣藤', '斜翼', '中文名', '安神木科', '膝柄木', '金莲木科', '合柱金莲木', '川苔草科', '川苔草属(所有种) *', '川藻属(所有种) *', '水石衣*', '藤黄科', '金丝李', '双籽藤黄*', '青钟麻科', '海南大风子', '杨柳科', '额河杨', '大花草科', '寄生花', '大戟科', '东京桐', '使君子科', '萼翅藤', '红榄李*', '千果榄仁', '千屈菜科', '小果紫薇', '毛紫薇', '水芫花', '细果野菱(野菱) *', '野牡丹科', '虎颜花*', '漆树科', '林生杧果', '无患子科', '梓叶槭', '庙台槭', '五小叶槭', '漾濞槭', '龙眼*', '中文名', '云南金钱槭', '伞花木', '掌叶木', '爪耳木', '野生荔枝*', '韶子*', '海南假韶子', '芸香科', '宜昌橙*', '道县野桔*', '红河橙*', '莽山野桔*', '山橘*', '金豆*', '黄檗', '川黄檗', '富民枳*', '楝科', '望谟崖摩', '红椿', '木果楝', '锦葵科', '柄翅果', '滇桐', '海南椴', '蚬木', '广西火桐', '梧桐属(所有种,梧桐除外)', '蝴蝶树', '平当树', '景东翅子树', '勐仑翅子树', '粗齿梭罗', '紫椴', '瑞香科', '土沉香', '云南沉香', '半日花科', '中文名', '半日花*', '龙脑香科', '东京龙脑香', '狭叶坡垒', '坡垒', '翼坡垒(铁凌)', '西藏坡垒', '望天树', '云南娑罗双', '广西青梅', '青梅', '叠珠树科', '伯乐树(钟萼木)', '铁青树科', '蒜头果', '瓣鳞花科', '瓣鳞花', '柽柳科', '疏花水柏枝', '蓼科', '金荞麦*', '茅膏菜科', '貉藻*', '石竹科', '金铁锁', '苋科', '苞藜*', '阿拉善单刺蓬*', '蓝果树科', '珙桐', '云南蓝果树', '绣球花科', '黄山梅', '蛛网萼', '五列木科', '猪血木', '山榄科', '滇藏榄', '中文名', '海南紫荆木', '紫荆木', '柿树科', '小萼柿*', '川柿*', '报春花科', '羽叶点地梅*', '山茶科', '圆籽荷', '杜鹃红山茶', '山茶属金花茶组(所有种)', '山茶属茶组(所有种, 大叶茶、大\n理茶除外) *', '大叶茶', '大理茶', '安息香科', '秤锤树属(所有种)', '猕猴桃科', '软枣猕猴桃*', '中华猕猴桃*', '金花猕猴桃*', '条叶猕猴桃*', '大籽猕猴桃*', '杜鹃花科', '兴安杜鹃', '朱红大杜鹃', '华顶杜鹃', '井冈山杜鹃', '江西杜鹃', '尾叶杜鹃', '圆叶杜鹃', '茜草科', '绣球茜', '香果树', '巴戟天', '滇南新乌檀', '龙胆科', '辐花', '夹竹桃科', '驼峰藤', '富宁藤', '紫草科', '新疆紫草*', '橙花破布木', '茄科', '黑果枸杞*', '云南枸杞*', '木犀科', '水曲柳', '天山梣', '毛柄木犀', '毛木犀', '苦苣苔科', '瑶山苣苔', '秦岭石蝴蝶', '报春苣苔', '辐花苣苔', '车前科', '胡黄连', '丰都车前*', '玄参科', '长柱玄参*', '狸藻科', '盾鳞狸藻*', '唇形科', '苦梓', '保亭花', '列当科', '草苁蓉*', '肉苁蓉*', '管花肉苁蓉*', '崖白菜', '冬青科', '扣树', '桔梗科', '刺萼参*', '菊科', '白菊木', '巴朗山雪莲', '雪兔子', '雪莲', '绵头雪兔子', '水母雪兔子', '阿尔泰雪莲', '革苞菊', '忍冬科', '七子花', '丁香叶忍冬', '匙叶甘松', '五加科', '人参属(所有种) *', '华参*', '伞形科', '山茴香*', '明党参*', '川明参*', '阜康阿魏*', '麝香阿魏*', '新疆阿魏*', '珊瑚菜(北沙参) *', '藻类 Algae', '马尾藻科', '硇洲马尾藻*', '黑叶马尾藻*', '墨角藻科', '鹿角菜*', '红翎菜科', '珍珠麒麟菜*', '耳突卡帕藻*', '念珠藻科', '发菜', '真菌 Eumycophyta', '线虫草科', '虫草(冬虫夏草)', '口蘑科(白蘑科)', '蒙古口蘑*', '松口蘑(松茸) *', '块菌科', '中华夏块菌*']
params1 = {
'中文名': [],
'别名': []
}
list1 = df['中文名'].tolist()
params1['中文名'] = list1
for kw in list1:
url = "https://baike.baidu.com/item/" + kw.strip('*')
page_text = requests.get(url=url, headers=headers,cookies=cookies,params=params).text
soup = BeautifulSoup(page_text, 'html.parser')
# 获取别名所在的标签
alias_tag = soup.find('dt', text='别 名')
if alias_tag:
# 获取所有别名的文本内容
alias = alias_tag.find_next_sibling('dd').text.strip().split(',')
params1['别名'].append(alias)
print(alias)
else:
params1['别名'].append('')
print(kw)
time.sleep(random.randint(10,12))
df1 = pd.DataFrame(params1['中文名'])
df2 = pd.DataFrame(params1['别名'])
with pd.ExcelWriter('excel1.xlsx') as writer:
df1.to_excel(writer, sheet_name='中文名', index=False)
df2.to_excel(writer, sheet_name='别名', index=False)
可能是ajax异步加载的,你用webdriver,不要用requests
爬百度、京东、淘宝、boss直聘、知乎等大型网站,它们反爬虫措施做的很好,而且也做了频率限制,大部分也是异步请求,还有加密和解密等。所以要爬取这类网站,最好用 selenium 模块,用requests 模块不容易爬取数据
你应该先将requests响应文本保存下来,看看有没有你要的数据。网页上数据不是一次性全部给你,如果你request得到的数据本来就不包含你想要的数据,自然就定位不到了噻
# 导入包
import requests
import re
def getHTMLText(url):
"""
请求获取html,(字符串)
:param url: 爬取网址
:return: 字符串
"""
try:
# 添加头信息,
kv = {
'cookie': 'thw=cn; v=0; t=ab66dffdedcb481f77fd563809639584; cookie2=1f14e41c704ef58f8b66ff509d0d122e; _tb_token_=5e6bed8635536; cna=fGOnFZvieDECAXWIVi96eKju; unb=1864721683; sg=%E4%B8%8B3f; _l_g_=Ug%3D%3D; skt=83871ef3b7a49a0f; cookie1=BqeGegkL%2BLUif2jpoUcc6t6Ogy0RFtJuYXR4VHB7W0A%3D; csg=3f233d33; uc3=vt3=F8dBy3%2F50cpZbAursCI%3D&id2=UondEBnuqeCnfA%3D%3D&nk2=u%2F5wdRaOPk21wDx%2F&lg2=VFC%2FuZ9ayeYq2g%3D%3D; existShop=MTU2MjUyMzkyMw%3D%3D; tracknick=%5Cu4E36%5Cu541B%5Cu4E34%5Cu4E3F%5Cu5929%5Cu4E0B; lgc=%5Cu4E36%5Cu541B%5Cu4E34%5Cu4E3F%5Cu5929%5Cu4E0B; _cc_=WqG3DMC9EA%3D%3D; dnk=%5Cu4E36%5Cu541B%5Cu4E34%5Cu4E3F%5Cu5929%5Cu4E0B; _nk_=%5Cu4E36%5Cu541B%5Cu4E34%5Cu4E3F%5Cu5929%5Cu4E0B; cookie17=UondEBnuqeCnfA%3D%3D; tg=0; enc=2GbbFv3joWCJmxVZNFLPuxUUDA7QTpES2D5NF0D6T1EIvSUqKbx15CNrsn7nR9g%2Fz8gPUYbZEI95bhHG8M9pwA%3D%3D; hng=CN%7Czh-CN%7CCNY%7C156; mt=ci=32_1; alitrackid=www.taobao.com; lastalitrackid=www.taobao.com; swfstore=97213; x=e%3D1%26p%3D*%26s%3D0%26c%3D0%26f%3D0%26g%3D0%26t%3D0%26__ll%3D-1%26_ato%3D0; uc1=cookie16=UtASsssmPlP%2Ff1IHDsDaPRu%2BPw%3D%3D&cookie21=UIHiLt3xThH8t7YQouiW&cookie15=URm48syIIVrSKA%3D%3D&existShop=false&pas=0&cookie14=UoTaGqj%2FcX1yKw%3D%3D&tag=8&lng=zh_CN; JSESSIONID=A502D8EDDCE7B58F15F170380A767027; isg=BMnJJFqj8FrUHowu4yKyNXcd2PXjvpa98f4aQWs-RbDvsunEs2bNGLfj8BYE6lWA; l=cBTDZx2mqxnxDRr0BOCanurza77OSIRYYuPzaNbMi_5dd6T114_OkmrjfF96VjWdO2LB4G2npwJ9-etkZ1QoqpJRWkvP.; whl=-1%260%260%261562528831082',
'user-agent': 'Mozilla/5.0'
}
r = requests.get(url, timeout=30, headers=kv)
# r = requests.get(url, timeout=30)
# print(r.status_code)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "爬取失败"
def parsePage(glist, html):
'''
解析网页,搜索需要的信息
:param glist: 列表作为存储容器
:param html: 由getHTMLText()得到的
:return: 商品信息的列表
'''
try:
# 使用正则表达式提取信息
price_list = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html)
name_list = re.findall(r'\"raw_title\"\:\".*?\"', html)
for i in range(len(price_list)):
price = eval(price_list[i].split(":")[1]) #eval()在此可以去掉""
name = eval(name_list[i].split(":")[1])
glist.append([price, name])
except:
print("解析失败")
def printGoodList(glist):
tplt = "{0:^4}\t{1:^6}\t{2:^10}"
print(tplt.format("序号", "商品价格", "商品名称"))
count = 0
for g in glist:
count = count + 1
print(tplt.format(count, g[0], g[1]))
# 根据页面url的变化寻找规律,构建爬取url
goods_name = "书包" # 搜索商品类型
start_url = "https://s.taobao.com/search?q=" + goods_name
info_list = []
page = 3 # 爬取页面数量
count = 0
for i in range(page):
count += 1
try:
url = start_url + "&s=" + str(44 * i)
html = getHTMLText(url) # 爬取url
parsePage(info_list, html) #解析HTML和爬取内容
print("\r爬取页面当前进度: {:.2f}%".format(count * 100 / page), end="") # 显示进度条
except:
continue
printGoodList(info_list)
在这个过程中出现了一点问题,就是最终结果打印不出来。经过了解应该是cookie的时效问题,重新打开网页,获取新的cookie即可。