Tôi muốn lấy tất cả các thẻ bắt đầu bằng # từ một trang web nhất định: ví dụ: "Tôi thích #stack Overflow vì #people rất #hữu ích!" Điều này sẽ kéo 3 thẻ bắt đầu bằng # vào một bảng. Trong trang web mà tôi nhắm mục tiêu, có một bảng mô tả #tag để chúng ta có thể thấy rằng thẻ #love là về tình yêu
Đây là công việc của tôi:
#import thư viện được sử dụng để truy vấn một trang web
nhập urllib2
#chỉ địnhurl
wiki = "https://www.symplur.com/healthcare-hashtags/tweet-chats/all"
#Truy vấn trang web và trả về html cho biến 'trang'
trang = urllib2.urlopen(wiki)
#import Hàm súp đẹp để phân tích dữ liệu được trả về từ
trang web
từ nhập bs4 BeautifulSoup
#Phân tích cú pháp html trong biến 'trang' và lưu trữ nó trong Beautiful Soup
định dạng
súp = BeautifulSoup(trang, "lxml")
in súp.prettify()
s = súp.get_text()
import re
re.findall("#(\w+)", s)
Tôi gặp vấn đề với đầu ra của mình: Đầu tiên là đầu ra trông như thế này: [u'eeeeee', u'333333', u'222222', u'222222', u'222222', u'222222', u '222222' , u'222222', u'222222', u'AASTGrandRoundscut'
Đầu ra nối hashtag với từ đầu tiên trong mô tả. Nếu tôi so sánh với ví dụ tôi đã trích dẫn trước đó thì kết quả là "lovethis".
Làm cách nào tôi chỉ có thể trích xuất một từ sau hashtag.
Cảm ơn
Tôi không nghĩ có nhu cầu sử dụngbiểu thức chính quy
Để phân tích văn bản bạn nhận được từ trang, bạn có thể sử dụngSúp đẹp
Hãy tự mình phân tích nó. Tôi đang sử dụng Python3.6 trong đoạn mã bên dưới, chỉ để hiển thị toàn bộ mã, nhưng dòng quan trọng là hashtags = soup.findAll('td', {'id':'tweetchatlist_hashtag'})
. Lưu ý rằng tất cả các hashtag trong bảng đều có td
thẻ và NHẬN DẠNG
属性 = tweetchatlist_hashtag
, vì vậy gọi .findTất cả
Đó là cách nó diễn ra ở đây:
yêu cầu nhập khẩu
import re
từ nhập bs4 BeautifulSoup
wiki = "https://www.symplur.com/healthcare-hashtags/tweet-chats/all"
trang = request.get(wiki).text
súp = BeautifulSoup(trang, "lxml")
hashtags = soup.findAll('td', {'id':'tweetchatlist_hashtag'})
Bây giờ chúng ta hãy xem mục đầu tiên trong danh sách:
>>> hashtag[0]
Vì vậy, chúng tôi thấy rằng điều chúng tôi thực sự muốn làMột
củatiêu đề
Giá trị tài sản:
>>> hashtags[0].a['title']
'#AASTGrandRounds'
Để tiếp tục sử dụng tính năng hiểu danh sách nhằm có được danh sách tất cả các thẻ bắt đầu bằng #:
>>> lst = [hashtag.a['title'] cho hashtag trong hashtag]
Nếu bạn không sử dụng cú pháp hiểu danh sách, dòng trên sẽ trông như thế này:
>>> lst = []
>>> cho hashtag trong hashtag:
lst.append(hashtag.a['title'])
thứ nhất
Sau đó, kết quả mong muốn, nhìn vào 20 mục đầu tiên của danh sách:
>>> lst[:20]
['#AASTGrandRounds', '#abcDrBchat', '#addictionchat', '#advocacychat', '#AetnaMyHealthy', '#AlzChat', '#AnatQ', '#anzOTalk', '#AskAvaility', '#ASPChat' , '#ATtalk', '#aughchat', '#AXSChat', '#ayacsm', '#bcceu', '#bccww', '#BCSM', '#benurse', '#BeTheDifference', '#bioethx']
Tôi là một lập trình viên xuất sắc, rất giỏi!