@@ -121,11 +121,20 @@ def _list_clickable_elements(page, selector=None) -> list[Element]:
121
121
return elements
122
122
123
123
124
- def titleurl_to_list (results : list [tuple [str , str ]]) -> str :
125
- s = "```results"
126
- for i , (title , url ) in enumerate (results ):
127
- s += f"\n { i + 1 } . { title } ({ url } )"
128
- return s + "\n ```"
124
+ @dataclass
125
+ class SearchResult :
126
+ title : str
127
+ url : str
128
+ description : str | None = None
129
+
130
+
131
+ def titleurl_to_list (results : list [SearchResult ]) -> str :
132
+ s = ""
133
+ for i , r in enumerate (results ):
134
+ s += f"\n { i + 1 } . { r .title } ({ r .url } )"
135
+ if r .description :
136
+ s += f"\n { r .description } "
137
+ return s .strip ()
129
138
130
139
131
140
def _list_results_google (page ) -> str :
@@ -141,8 +150,11 @@ def _list_results_google(page) -> str:
141
150
h3 = result .query_selector ("h3" )
142
151
if h3 :
143
152
title = h3 .inner_text ()
144
- result .query_selector ("span" ).inner_text ()
145
- hits .append ((title , url ))
153
+ # desc has data-sncf attribute
154
+ desc = (
155
+ result .query_selector ("[data-sncf]" ).inner_text ().strip ().split ("\n " )[0 ]
156
+ )
157
+ hits .append (SearchResult (title , url , desc ))
146
158
return titleurl_to_list (hits )
147
159
148
160
@@ -163,6 +175,6 @@ def _list_results_duckduckgo(page) -> str:
163
175
h2 = result .query_selector ("h2" )
164
176
if h2 :
165
177
title = h2 .inner_text ()
166
- result .query_selector ("span" ).inner_text ()
167
- hits .append ((title , url ))
178
+ desc = result .query_selector ("span" ).inner_text (). strip (). split ( " \n " )[ 0 ]
179
+ hits .append (SearchResult (title , url , desc ))
168
180
return titleurl_to_list (hits )
0 commit comments