先附上数据:
<div class="p-name p-name-type-2">
<a target="_blank" title="Apple iPhone 6 (A1589) 16GB 金色 移动4G手机" href="//item.jd.com/1217493.html" οnclick="searchlog(1,1217493,0,1,'','flagsClk=4194952')">
<em>Apple <font class="skcolor_ljg">iPhone</font> <font class="skcolor_ljg">6</font> (A1589) 16GB 金色 移动4G手机</em>
<i class="promo-words" id="J_AD_1217493"></i>
</a>
</div>
用bs想要爬取title和href里面的内容,由于初学试了好几种办法,未果。先附上代码:
第一次尝试:
#!/usr/bin/python
2 #coding:utf-8
3 from bs4 import BeautifulSoup
4 import re
5
6
7 soup = BeautifulSoup(open(‘jd.html’),”lxml”) #已经爬下的页面(上面代码为其中一段)
8 reg=u”(title=.*?\w+[\u4e00-\u9fa5]+)”
9 Res = re.compile(reg)
10 source = soup.find_all(class_ = ‘p-name p-name-type-2’,text=Res)
11 for item,nu in enumerate(source):
12 print item,nu
第二次:
#!/usr/bin/python
…
7 soup = BeautifulSoup(open(‘jd.html’),”lxml”)
8 source = soup.find_all(class_ = ‘p-name p-name-type-2’)
9 Res = source.body.contents[0].attrs
10 Title = Res[‘title’]
11 Link = Res[‘href’]
初学乍道有许多不理解,而且想用python做毕业设计所以还希望有高人能帮忙指点一下, 感激不尽!
注:爬取的页面为:view-source:http://search.jd.com/Search?keyword=iphone6&enc=utf-8&cu=true&utm_source=www.qujianglou.cn&utm_medium=tuiguang&utm_campaign=t_255634027_&utm_term=4ef47fa96b234c9c8bb875c9a92566da-p_340075007
你的定位有问题, 按照你的第三种改了改如下:
Ln [19]: a =soup.find_all('div',{'class': 'p-name-type-2'})[0].find_all('a')[0]
In [20]: print a['href']
//item.jd.com/1217493.html
In [21]: print a['title']
Apple iPhone 6 (A1589) 16GB 金色 移动4G手机
另外,如果要用
BeautifulSoup
就别用正则了;正则,Bs, xpath 选择一个就好。